Wir verlagern unser (großes) Projekt auf Git und denken über die Verwendung von Submodulen nach. Unser Plan ist es, drei verschiedene Köpfe im Superprojekt zu haben: Release, Stable, Neueste. Die Projektleiter kümmern sich um die Freigabe und die stabilen Zweige. Sie verschieben die Submodule nach Bedarf.
Das Problem ist der "neueste" Kopf. Wir möchten, dass der "neueste" Kopf des Superprojekts die Hauptzweige aller Submodule (automatisch) verfolgt. Und es wäre auch großartig, wenn es die Geschichte aller Commits für das Submodul zeigen würde.
Ich habe mir Gitslave angesehen, aber es ist nicht ganz das, was wir wollen. Irgendwelche Vorschläge?
git
git-submodules
git-track
l.thee.a
quelle
quelle
Antworten:
Update März 2013
Git 1.8.2 hat die Möglichkeit hinzugefügt, Zweige zu verfolgen.
Wenn Sie bereits ein Submodul vorhanden hatten , möchten Sie jetzt einen Zweig verfolgen. Weitere Informationen finden Sie unter " So erstellen Sie ein vorhandenes Submodul für einen Zweig ".
Allgemeine Informationen zu Submodulen finden Sie auch in Vogellas Tutorial zu Submodulen.
Hinweis:
Siehe
git submodule
Manpage :Siehe Festschreiben b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Wenn--branch
angegeben, notieren Sie es in.gitmodules
Ursprüngliche Antwort (Februar 2012):
Ein Submodul ist ein einzelnes Commit, auf das ein übergeordnetes Repo verweist.
Da es sich um ein Git-Repo für sich handelt, ist die "Historie aller Commits" über ein
git log
innerhalb dieses Submoduls verfügbar.Damit ein Elternteil automatisch das letzte Commit eines bestimmten Zweigs eines Submoduls verfolgen kann, muss es:
gitslave (den Sie bereits angesehen haben) scheint am besten zu passen, auch für die Festschreibungsoperation .
Weitere Alternativen finden Sie hier .
quelle
git config -f .gitmodules submodule.<path>.branch <branch>
. Alles hinzufügen, festschreiben und pushen.--remote
Tag zu verwenden, wenn Sie beim Aktualisieren keine abgetrennten Köpfe erhalten möchten, und sich zu fragen, warum Ihr frisch gezogener Code anscheinend hinter dem Master steckt!git submodule update
Befehls aus, indem angegeben wird, auf welches Commit (dh das letzte Commit auf dem Master) das Submodul aktualisiert werden soll, und nicht automatisch, dass das übergeordnete Repo welches aktualisiert Auf Commit wird vom Submodul zur Klonzeit hingewiesen?