Plusieurs dépôts Git pour chaque projet Eclipse ou un dépôt git
je suis en train de passer à Git à partir de SVN. Dans SVN j'ai eu plusieurs projets eclipse dans un seul dépôt SVN qui est pratique pour la navigation des projets. J'allais passer à avoir un dépôt git par projet eclipse mais EGit suggère de faire autrement.
Le guide EGit suggère de mettre de projets multiples en un seul dépôt Git.
L'examen de questions similaires tel que celui-ci suggère un projet par dépôt.
quelle approche est la meilleure pratique et qu'est-ce que les gens mettent en œuvre?
5 réponses
cela dépend à quel point ces projets sont étroitement liés. Posez - vous les questions suivantes:
- devront-ils toujours être ramifiés/étiquetés ensemble?
- Aurez-vous envie de s'engager sur tous les projets, ou fait commettre surtout ne touchez un projet?
- le système de construction de fonctionner sur tous ou ont-ils une limite?
si vous les mettez tous dans un, certains les choses d'en haut seront plus faciles. Vous n'aurez qu'à des branches/tags/stash/s'engager dans un référentiel, par opposition à le faire pour chaque dépôt séparément.
mais si vous avez besoin par exemple d'avoir des cycles de publication séparés pour les projets, alors il est nécessaire d'avoir chaque projet dans un dépôt indépendant.
notez que vous pouvez toujours diviser un dépôt plus tard, ou combiner plusieurs dépôts en un seul sans perdre l'historique.
la combinaison est un peu plus difficile à faire que la séparation, donc j'irais d'abord pour un dépôt et voir comment ça se passe.
j'utilise 1 repo par projet.
un Certain raisonnement:
-
quand vous découvrez que vous avez foiré quelque chose après plusieurs propagations, il est beaucoup plus facile de corriger quand il s'agit d'un seul projet. Il suffit de penser, vous avez fait engage à deux autres projets et maintenant vous devez corriger l'engagement que vous avez fait sur le 3ème projet.
-
comme L'a dit Fedir, votre histoire et votre journal de bord sont beaucoup plus propres. Il montre seulement le s'engage pour ce projet.
-
cela fonctionne mieux avec le flux de développement que j'ai. J'ai une branche principale pour la production, développer une branche pour, bien, le développement, et je crée des branches pour mettre en œuvre des fonctionnalités (vous pouvez en lire plus à ce sujet ici: http://blog.avirtualhome.com/development-workflow-using-git/ )
-
lorsque vous travaillez en équipe, et donc "partager" le git repo, faire l'équipe les membres vraiment besoin de tous les autres projets?
Juste quelques pensées, mais ce qui se résume à: Faire ce qui fonctionne pour vous.
j'ai plusieurs projets (projets Eclipse) et j'ai essayé différentes choses pour savoir ce qui a fonctionné le mieux en termes de développement quotidien réel. Voici ce que j'ai trouvé et je pense que la plupart des gens trouveraient la même chose s'ils gardaient la trace des résultats et les analysaient objectivement.
en bref, l'application des règles suivantes donnera les meilleurs résultats:
- créer un dépôt distinct pour chaque groupe de projets.
- chaque groupe de projet consiste en un groupe de projets étroitement liés les uns aux autres, qui doivent être administrés ensemble et qui ne peuvent pas être facilement découplés les uns des autres.
- Un groupe de projet peut contenir un seul projet.
- un groupe de projet qui contient plusieurs projets devrait être examiné pour voir si certains de ses projets peuvent être découplés les uns des autres de sorte qu'il peut être divisé en petits groupes de projets qui sont encore contient des projets qui sont étroitement liés les uns aux autres, qui devraient être administrés ensemble et qui ne peuvent pas être facilement découplés les uns des autres.
les lignes directrices suivantes expliquent plus en détail ce processus pour déterminer les projets à placer dans le même dépôt:
-
si un projet n'est pas étroitement lié à un autre projet (par exemple, le projet peut être ouvert sans que d'autres projets vous devez alors le placer dans son propre dépôt pour les raisons expliquées dans les réponses ci-dessus.
-
si un projet dépend d'autres projets ou d'autres projets dépendent du projet, alors il s'agit de savoir exactement dans quelle mesure ils sont connectés entre eux, dans quelle mesure ils peuvent être assemblés et dans quelle mesure ils peuvent être découplés de chaque projet. autre.
A) par exemple, un projet de test qui contient des classes de test de junit pour tester les classes d'un projet principal est un cas où les deux projets sont très liés l'un à l'autre, peuvent facilement être empaquetés ensemble et ne peuvent pas être facilement découplés l'un de l'autre. Ces projets devraient être placés dans le même répertoire pour les raisons expliquées dans la partie C ci-dessous.
B) Dans un cas où un projet s'appuie sur un autre projet fournir une sorte de ressources partagées il s'agit vraiment de savoir dans quelle mesure elles peuvent être administrées ensemble et dans quelle mesure elles peuvent être découplées les unes des autres. Par exemple, si le projet avec les ressources partagées est utilisé par de nombreux projets, il devrait être placé dans son propre dépôt parce que les autres projets non liés sont touchés par les changements apportés au projet de code source partagé. Dans un cas comme celui-ci, le projet de ressources partagées doivent être découplés des projets dépendants au lieu d'être directement relié aux projets dépendants. (Par exemple, il serait préférable de créer des fichiers d'archives suivis en versions [jar files avec un nom comme "projectName".1.0.1.0.jar par exemple] et inclure une copie de ceux de chaque projet, au lieu de partager les ressources en reliant l'ensemble des projets.)
C) si les projets multiples sont liés, peuvent être facilement administrés ensemble mais ne peuvent pas être facilement découplés les uns des autres, alors cela dépend de la façon dont étroitement connectés, ils sont les uns avec les autres.
I) si les projets sont placés dans un seul dépôt, alors les projets seront synchronisés dans le dépôt chaque fois qu'il y a un commit, ce qui peut être un vrai épargnant si les projets sont étroitement liés. Toutefois, cela crée aussi les problèmes mentionnés dans les réponses ci-dessus.
II) si les projets sont placés dans des dépôts distincts, alors vous devrez prendre soin de les conserver. en phase les uns avec les autres et assurez-vous d'inclure une sorte de mécanisme pour indiquer qui engage appartient au même point de synchronisation à travers les projets (peut-être quelque chose comme inclure le même numéro de point de synchronisation dans les commentaires pour le commit de chaque projet quand un groupe de commits est fait à travers les projets.)
III) donc, dans des cas comme celui-ci, il est presque toujours préférable de regrouper ces projets dans un seul dépôt pour réduire les frais généraux de l'effort humain dans la synchronisation les commits et pour éviter les erreurs humaines si les commits doivent être désactivés. La seule fois où il serait peut-être préférable de les placer dans des dépôts distincts, c'est lorsqu'un seul des projets est modifié régulièrement et que les autres projets connexes sont rarement modifiés.
je pense que cette question est liée à une que j'ai répondu ici . fondamentalement Git par sa nature soutient une structure granulaire très fine quand il s'agit de projets/dépôts. J'ai lu et appris qu'un dépôt par projet est presque toujours une pratique exemplaire. Vous ne perdez presque rien en gardant les projets séparés et gagnez beaucoup comme d'autres l'ont décrit.
probablement, il sera plus performant de travailler avec si vous allez créer plusieurs dépôts git.
si vous voulez faire une branche, seuls les fichiers du projet seraient ramifiés, et pas tous les projets. Petit projet, il sera plus rapide à analyser, à s'engager. Opérations prendront moins de temps.
le log sera plus clair aussi, vous pouvez faire plus de configuration granulée si vous avez plusieurs dépôts git.