Puis-je imbriquer des dépôts Git? J'ai:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
Est - il logique de git init/add
la /project_root
pour faciliter la gestion de tout ou localement dois - je gérer my_project
et le 3e parti séparément?
Placez vos bibliothèques tierces dans un référentiel séparé et utilisez des sous-modules pour les associer au projet principal. Voici un aperçu:
http://git-scm.com/book/en/Git-Tools-Submodules
En décidant comment segmenter un repo, je déciderais généralement en fonction de la fréquence à laquelle je les modifierais. S'il s'agit d'une bibliothèque tierce et que seules les modifications que vous y apportez sont une mise à niveau vers une version plus récente, vous devez absolument la séparer du projet principal.
la source
Juste pour être complet:
Il existe une autre solution que je recommanderais: la fusion des sous-arbres .
Contrairement aux sous-modules, il est plus facile à maintenir. Vous créeriez chaque référentiel de la manière habituelle. Lorsque vous êtes dans votre référentiel principal, vous souhaitez fusionner le maître (ou toute autre branche) d'un autre référentiel dans un répertoire de votre répertoire principal.
Ensuite, afin d'extraire l'autre référentiel dans votre répertoire (pour le mettre à jour), utilisez la stratégie de fusion de sous-arborescence:
J'utilise cette méthode depuis des années maintenant, ça marche :-)
Vous trouverez plus d'informations sur cette façon, y compris la comparaison avec les sous-modules, dans ce document git howto .
la source
Vous pourriez ajouter
à
cela devrait empêcher le dépôt imbriqué d'être inclus dans le dépôt parent, et vous pouvez travailler avec eux indépendamment.
Mais: Si un utilisateur exécute git clean -dfx dans le référentiel parent, il supprimera le référentiel imbriqué ignoré. Une autre méthode consiste à créer un lien symbolique sur le dossier et à ignorer le lien symbolique. Si vous exécutez ensuite git clean, le lien symbolique est supprimé, mais le dépôt «imbriqué» restera intact car il réside vraiment ailleurs.
la source
git-subtree vous aidera à travailler avec plusieurs projets dans une seule arborescence et à conserver un historique séparable pour eux.
la source
Sommaire.
Oui. Cependant, par défaut, git ne suit pas le
.git
dossier du référentiel imbriqué. Git a des fonctionnalités conçues pour gérer les référentiels imbriqués (lisez la suite).Cela n'a probablement pas de sens car git a des fonctionnalités pour gérer les dépôts imbriqués. Les fonctionnalités intégrées de Git pour gérer les référentiels imbriqués sont
submodule
etsubtree
.Voici un blog sur le sujet et voici une question SO qui couvre les avantages et les inconvénients de l'utilisation de chacun.
la source
J'utiliserais un référentiel par projet. De cette façon, l'historique devient plus facile à parcourir.
Je vérifierais également la version de la bibliothèque tierce que j'utilise, dans le référentiel du projet qui l'utilise.
la source