Hinweis: Dies ist aus dem Jahr 2009 und war damals vielleicht gut, aber jetzt gibt es bessere Optionen.
Wir nutzen dies. Es heißt git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Legen Sie es einfach in ein geeignetes bin-Verzeichnis (/ usr / local / bin). Unter Windows müssen Sie möglicherweise die Syntax ändern, damit es funktioniert :)
Aktualisieren:
Als Antwort auf den Kommentar des ursprünglichen Autors zum Einziehen aller KÖPFE aller Submodule - das ist eine gute Frage.
Ich bin mir ziemlich sicher, dass git
es intern keinen Befehl dafür gibt. Dazu müssten Sie herausfinden, was HEAD wirklich für ein Submodul ist. Das könnte so einfach sein, als würde man sagen, es master
sei der aktuellste Zweig usw.
Erstellen Sie anschließend ein einfaches Skript, das Folgendes ausführt:
- Suchen Sie
git submodule status
nach "geänderten" Repositorys. Das erste Zeichen der Ausgabezeilen zeigt dies an. Wenn ein Sub-Repo geändert wird, möchten Sie möglicherweise NICHT fortfahren.
- CD für jedes aufgelistete Repo in sein Verzeichnis legen und ausführen
git checkout master && git pull
. Auf Fehler prüfen.
- Am Ende schlage ich vor, dass Sie dem Benutzer eine Anzeige drucken, um den aktuellen Status der Submodule anzuzeigen. Fordern Sie ihn möglicherweise auf, alle hinzuzufügen und festzuschreiben.
Ich möchte erwähnen, dass dieser Stil nicht wirklich das ist, wofür Git-Submodule entwickelt wurden. Normalerweise möchten Sie sagen, dass "LibraryX" die Version "2.32" hat und so bleibt, bis ich ihm sage, dass er "upgraden" soll.
In gewisser Weise machen Sie das mit dem beschriebenen Skript, aber nur automatischer. Vorsicht ist geboten!
Update 2:
Wenn Sie sich auf einer Windows-Plattform befinden, sollten Sie Python verwenden, um das Skript zu implementieren, da es in diesen Bereichen sehr leistungsfähig ist. Wenn Sie unter Unix / Linux arbeiten, empfehle ich nur ein Bash-Skript.
Benötigen Sie Klarstellungen? Schreibe einfach einen Kommentar.