2009-09-22 5 views
8

Wir haben git Submodule untersucht und wir fragen uns, welchen Vorteil (wenn überhaupt) ein Repository hat, das Submodule verwendet, die ein Repository in einem anderen Repository mit einer .gitignore Datei haben.Was ist der Vorteil der Verwendung von Git Submodulen gegenüber einem Repo in einem anderen Repo mit einem Gitignore?

Beispiel ohne Submodule:

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

Dies sollte wahrscheinlich zu [SoftwareEngineering.SE] (https://softwareengineering.stackexchange.com/) migriert werden. –

Antwort

15

Die git Eltern (der Submodule) werden die Zweige und Tag-IDs der Submodule zu verfolgen, wenn Sie zu begehen. Dadurch wird sichergestellt, dass die Untermodule bei der Überprüfung des übergeordneten Elements (bei einer bekannten Version) auch ihre richtigen Tags enthalten.

Wenn es sich wie oben nur um ein ignoriertes Unterverzeichnis handelt, handelt es sich im Grunde um zwei unabhängige Git-Repos, als wären sie nicht Teil einer Dateisystemhierarchie.

+2

Dies ist genau das wichtigste Unterscheidungsmerkmal: Mit Submodulen haben Sie ein versioniertes Objekt im übergeordneten Repository, das das Submodul darstellt. Verschachtelte (und ignorierte) Unterrepositorys haben im übergeordneten Repo überhaupt keine Repräsentation. –

+0

Hallo, ich habe ein Problem, das zu verstehen: Sagen wir, das Arbeitsrepo ist A und das Submodul repo ist b. Meinst du, dass b Änderungen in seinem Code innerhalb von A verfolgt? Könnten Sie bitte ein Beispiel geben? –

+0

@adityamenon Ich habe es als eine organisierte Art gesehen, 'git submodule foreach git pull' zu machen, ohne mich daran zu erinnern, wo meine" Submodule "sind. – JRomero

Verwandte Themen