2009-09-22 5 views
8

Nous avons étudié les sous-modules git et nous nous demandons quel avantage (le cas échéant) existe-t-il d'avoir un référentiel utilisant des sous-modules ayant un référentiel dans un autre référentiel avec un fichier .gitignore.Quel est l'avantage d'utiliser des sous-modules git plutôt que d'avoir un repo dans un autre repo avec un gitignore?

Exemple sans sous-modules:

mkdir a 
cd a 
git init 
touch test1.txt 
echo "b" > .gitignore 
git add . 
git commit -m "Adding test1.txt and gitignore" 

mkdir b 
cd b 
git init 
touch test2.txt 
git add . 
git commit -m "Adding test2.txt" 

git log 
cd .. 
git log 
+0

Ceci devrait probablement être migré vers [SoftwareEngineering.SE] (https://softwareengineering.stackexchange.com/) –

Répondre

15

Le parent git (des sous-modules) gardera la trace des branches et des ID d'étiquette des sous-modules lorsque vous vous engagez. Cela garantira que lorsque vous extrayez le parent (à une version connue), les sous-modules contiendront également leurs bonnes balises. Si, comme ci-dessus, il s'agit simplement d'un sous-répertoire ignoré, il s'agit essentiellement de deux repos git indépendants, comme s'ils ne faisaient pas partie d'une hiérarchie de système de fichiers.

+2

C'est exactement le différentiateur clé: en utilisant les sous-modules, vous avez un objet versionné dans le référentiel parent qui représente le sous-module. Les sous-dépôts imbriqués (et ignorés) n'ont aucune représentation dans le référentiel parent. –

+0

Salut, j'ai un problème pour comprendre ceci: disons que le repo de travail est A et le repo de sous-module est b. Voulez-vous dire que b garde la trace des modifications apportées à son code dans A? Pourriez-vous s'il vous plaît fournir un exemple? –

+0

@adityamenon Je l'ai vu comme une façon organisée d'être capable de faire 'git submodule foreach git pull' sans me souvenir où sont mes" sous-modules ". – JRomero

Questions connexes