Kann ich Git-Repositorys verschachteln? Ich habe:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
Ist es sinnvoll, git init/add
die /project_root
Verwaltung von allem vor Ort zu vereinfachen, oder muss ich my_project
und die von Drittanbietern separat verwalten?
Platzieren Sie Ihre Bibliotheken von Drittanbietern in einem separaten Repository und verknüpfen Sie sie mithilfe von Submodulen mit dem Hauptprojekt. Hier ist ein Rundgang:
http://git-scm.com/book/en/Git-Tools-Submodules
Bei der Entscheidung, wie ein Repo segmentiert werden soll, entscheide ich mich normalerweise dafür, wie oft ich sie ändern würde. Wenn es sich um eine Bibliothek eines Drittanbieters handelt und nur Änderungen, die Sie daran vornehmen, auf eine neuere Version aktualisiert werden, sollten Sie sie auf jeden Fall vom Hauptprojekt trennen.
quelle
Nur der Vollständigkeit halber:
Es gibt eine andere Lösung, die ich empfehlen würde: das Zusammenführen von Teilbäumen .
Im Gegensatz zu Submodulen ist die Wartung einfacher. Sie würden jedes Repository auf normale Weise erstellen. In Ihrem Hauptrepository möchten Sie den Master (oder einen anderen Zweig) eines anderen Repositorys in einem Verzeichnis Ihres Hauptverzeichnisses zusammenführen.
Verwenden Sie dann die Strategie zum Zusammenführen von Teilbäumen, um das andere Repository in Ihr Verzeichnis zu ziehen (um es zu aktualisieren):
Ich benutze diese Methode seit Jahren, sie funktioniert :-)
Weitere Informationen zu dieser Methode, einschließlich des Vergleichs mit Submodulen , finden Sie in diesem Git- Howto-Dokument .
quelle
Sie könnten hinzufügen
zu
Dadurch sollte verhindert werden, dass das verschachtelte Repo in das übergeordnete Repo aufgenommen wird, und Sie können unabhängig damit arbeiten.
Aber: Wenn ein Benutzer git clean -dfx im übergeordneten Repo ausführt, wird das ignorierte verschachtelte Repo entfernt. Eine andere Möglichkeit besteht darin, den Ordner zu verknüpfen und den Symlink zu ignorieren. Wenn Sie dann git clean ausführen, wird der Symlink entfernt, aber das 'verschachtelte' Repo bleibt erhalten, da es sich wirklich an anderer Stelle befindet.
quelle
Mit git-subtree können Sie mit mehreren Projekten in einem einzigen Baum arbeiten und einen trennbaren Verlauf für diese erstellen.
quelle
Zusammenfassung.
Ja. Standardmäßig verfolgt git jedoch nicht den
.git
Ordner des verschachtelten Repositorys. Git verfügt über Funktionen zum Verwalten verschachtelter Repositorys (lesen Sie weiter).Dies ist wahrscheinlich nicht sinnvoll, da Git über Funktionen zum Verwalten verschachtelter Repositorys verfügt. Gits integrierte Funktionen zum Verwalten verschachtelter Repositorys sind
submodule
undsubtree
.Hier ist ein Blog zum Thema und hier ist eine SO-Frage , die die Vor- und Nachteile der jeweiligen Verwendung abdeckt.
quelle
Ich würde ein Repository pro Projekt verwenden. Auf diese Weise wird das Durchsuchen des Verlaufs einfacher.
Ich würde auch die Version der von mir verwendeten Drittanbieter-Bibliothek in das Repository des Projekts einchecken, das sie verwendet.
quelle