Uwaga: pochodzi z 2009 roku i może wtedy było dobrze, ale teraz są lepsze opcje.
Używamy tego. To się nazywa 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
Po prostu umieść go w odpowiednim katalogu bin (/ usr / local / bin). W systemie Windows konieczna może być modyfikacja składni, aby działała :)
Aktualizacja:
W odpowiedzi na komentarz oryginalnego autora o wciągnięciu wszystkich HEADÓW wszystkich submodułów - to dobre pytanie.
Jestem całkiem pewien, że wewnętrznie git
nie ma na to polecenia. Aby to zrobić, musisz określić, czym tak naprawdę jest HEAD dla submodułu. To może być tak proste, jak powiedzenie, że master
jest to najbardziej aktualna gałąź itp.
Następnie utwórz prosty skrypt, który wykonuje następujące czynności:
- sprawdź
git submodule status
„zmodyfikowane” repozytoria. Wskazuje na to pierwszy znak linii wyjściowych. Jeśli sub-repo zostanie zmodyfikowane, możesz NIE chcieć kontynuować.
- dla każdego wymienionego repo, włóż CD do jego katalogu i uruchom
git checkout master && git pull
. Sprawdź błędy.
- Na koniec sugeruję wydrukowanie wyświetlacza dla użytkownika, aby wskazać aktualny status submodułów - być może poprosić go o dodanie wszystkich i zatwierdzenie?
Chciałbym wspomnieć, że ten styl nie jest tak naprawdę przeznaczony dla podmodułów git. Zazwyczaj chcesz powiedzieć, że „LibraryX” jest w wersji „2.32” i tak pozostanie, dopóki nie powiem „zaktualizować”.
W pewnym sensie robisz to z opisanym skryptem, ale tylko bardziej automatycznie. Wymagana jest ostrożność!
Aktualizacja 2:
Jeśli korzystasz z platformy Windows, możesz rozważyć użycie Pythona do implementacji skryptu, ponieważ jest on bardzo zdolny w tych obszarach. Jeśli korzystasz z Uniksa / Linuksa, sugeruję tylko skrypt bash.
Potrzebujesz wyjaśnień? Po prostu opublikuj komentarz.