Comment lier 1 dépôt git à d'autres dépôts?

Comment lier 1 dépôt git à d'autres dépôts ?

Supposons que j'ai les dépôts suivants:

/var/Commun.git

/var/Projet1.git

/var/Projet2.git

Maintenant, je veux utiliser Commun.git dans d'autres dépôts. comment puis-je le faire ?

23
demandé sur ray pixar 2010-12-07 17:18:02

2 réponses

Vous cherchez probablement sous-modules :

Les sous-modules permettent d'intégrer des dépôts étrangers dans un sous-répertoire dédié de l'arborescence source, toujours pointé vers un commit particulier.

Un mot clé il y a embedded : un clone réel de Common.git serait intégré dans chacun des autres projets. C'est généralement bon quand vous ne le modifiez pas dans les autres projets, utilisez simplement une version et mettez à jour cette version de la Commune d'origine.git de temps en temps. Vous feriez quelque chose comme ceci:

# add Common.git as a submodule at the path "common" inside this repo
git submodule add /var/Common.git common
# initialize it, clone, and check out a copy
git submodule update --init
# commit the addition of the submodule
git commit

Notez que le chemin d'accès au sous-module va être validé dans votre référentiel, vous devez donc utiliser une URL accessible au public. Si vous souhaitez personnaliser localement, vous pouvez exécuter git submodule init, modifier l'url en .git/config, puis exécutez git submodule update. Si vous avez d'autres questions, consultez la page de manuel ou recherchez donc; il y a beaucoup de questions sous-module ici.

Si d'autre part vous allez éditer le contenu de la Commune.git dans chacun des projets, Vous pouvez utiliser git-subtree , qui est un wrapper convivial autour des facultés de fusion des sous-arbres de git. Qui vous permettra de considérer le contenu de la commune.git en tant que Contenu suivi dans chacun des projets, tout en étant capable de diviser les commits et de les fusionner en commun.git lui-même, et fusionner les mises à jour à Common.git retour dans les projets.

38
répondu Cascabel 2010-12-07 14:38:04

C'est un cas parfait pour qui git submodule a été conçu: http://git-scm.com/docs/git-submodule

Dans le Project1 et le Project2, vous ajoutez un sous-module du Common. Et puis vous git submodule checkout

Dans le repo cloné, il ne stocke que le hachage du Git commun. Donc, vous git submodule init et la caisse.

4
répondu Lakshman Prasad 2010-12-07 14:33:27