Alternatives aux sous-modules Git?
je pense que l'utilisation de sous-modules Git est quelque peu gênante pour mon flux de développement. J'ai entendu parler de gitstree et Gitslave.
- Existe-t-il d'autres outils pour les projets de dépôts multiples et comment les comparer ?
- ces outils peuvent-ils fonctionner sous Windows ?
3 réponses
ce qui est le mieux pour vous dépend de vos besoins, désirs, et flux de travail. Ils sont dans certains sens semi-isomorphique, il est juste certains sont beaucoup plus facile à utiliser que d'autres pour des tâches spécifiques.
-
gitslave est utile lorsque vous contrôlez et développez sur les sous-projets à peu près en même temps que le superproject, et en outre lorsque vous voulez étiqueter, branche, push, pull, etc tous les dépôts à la même temps. gitslave n'a jamais été testé sur des fenêtres que je connais. Il nécessite perl.
-
git-submodule est préférable lorsque vous ne contrôlez pas les sous-projets ou plus spécifiquement que vous souhaitez fixer le sous-projet à une révision spécifique, même si le sous-projet Change. git-submodule est une partie standard de git et donc fonctionnerait sur les fenêtres.
-
git-sous-arborescence offre un avant-goût de la stratégie de fusion subtree intégrée de git. C'est mieux quand vous préférez avoir une histoire git "unifiée" avec un seul dépôt. Contrairement à la stratégie de fusion des sous-arborescences, il est plus facile d'exporter les modifications vers les différentes arborescences (répertoires) vers le projet original, mais ce n'est pas aussi automatique qu'avec gitslave ou même git-submodule.
-
repo est en théorie similaire à gitslave, mais pas aussi bien documenté pour les opérations non-android que j'ai trouvé. Il est assez dédié au modèle de développement Android de Google et ne supporte que nativement une poignée de commandes git (bien que vous puissiez exécuter des commandes arbitraires) et le support natif limité ne supporte pas, par exemple, un dépôt centralisé pour push to et checking out une branche semble assez difficile.
-
kitenet mr est ce que vous pouvez utiliser si vous avez plusieurs systèmes de contrôle de version en usage, mais est principalement limitée pour les superprojets git uniquement en raison de son approche du plus petit dénominateur commun. Il y a des façons d'exécuter des commandes arbitraires, mais ils ne sont pas aussi bien intégré.
j'utilise actuellement des sous-modules pour le développement et pas seulement des bibliothèques tierces. Il y a certains moyens que vous pouvez rendre la vie plus facile avec les sous-modules, surtout quand ils sont la source de fusionner ou de conflits de rebase. Regarder à ls-tree pour obtenir les 2 commits impliqués sur un conflit dans le sous-module. C'est probablement la partie la plus difficile des sous-modules pour les gens à traiter. Pour l'instant, les scripts faciliteront grandement le travail. Les versions futures de Git devraient avoir une meilleure soutien pour traiter avec eux.
Espérons que cette aide.
nous avons rencontré un problème similaire lors de l'utilisation de sous-modules Git dans des projets où nous avions des dépendances dans une variété de langues. Pour y faire face, nous avons construit et ouvert un outil appelé MDLR ("modulaire") qui vous donne des dépendances Git en version déclarative avec des fonctionnalités similaires aux submodules Git, mais sans le flux de travail ennuyeux. Vous pouvez l'installer et de gérer vos dépendances, avec les instructions/téléchargements sur le dépôt GitHub