Czy możliwe jest, aby podmoduł git składał się z kilku innych podmodułów git, a repozytorium super git pobierało zawartość każdego podmodułu?
Próbowałem to zrobić, używając oczywistego / naiwnego podejścia do tworzenia repozytorium git zawierającego kilka podmodułów.
Następnie dodajemy to repozytorium git do innego repozytorium git jako podmoduł.
Następnie próbujesz pobrać z katalogu głównego repozytorium super git do git submodule init
i wtedy git submodule update
. Ale to nie pozwala na pobranie podmodułów.
git
git-submodules
pierwszy korespondent
źródło
źródło
Odpowiedzi:
Jak wspomniano w retrospektywnym dodaniu --recursive do repozytorium git
powinno działać.
źródło
git submodule init; git submodule update --recursive
to synonim powyższego, ale tak nie jest.--init
flagę, moduły podrzędne w jednym z moich modułów podrzędnych są po prostu inicjalizowane do starszych wersji, a nie do najnowszych.git submodule foreach git pull origin master
i działa częściowo: moduły podrzędne są aktualizowane, ale czasamiHEAD
są odłączane, a dla modułów podrzędnych w modułach podrzędnych nie mogę zatwierdzić zmian w moim bezpośrednim module podrzędnym, ponieważ ma on „zmodyfikowaną zawartość”, a nie „nowe zatwierdzenia” (ponieważ jego własne moduły podrzędne mają „nowe zatwierdzenia” i są aktualizowane).Jak komentuje Sridhar poniżej, z Git1.6.5 +
git clone --recursive
jest teraz oficjalną alternatywą, opisaną w:git clone --submodule
”--recursive
do repozytorium git ”(z
alias $ git config --global alias.cloner = 'clone --recursive'
, co pozwala uniknąć cieniowania zwykłegogit clone
polecenia)inamiy prawidłowo wskazuje się na
git submodule update --init --recursive
polecenie, wprowadzony w popełnienia b13fd5c ponownie w git1.6.5 przez Johan Herland (jherland
) .A IceFire dodaje w komentarzach :
(starsza oryginalna odpowiedź)
Zgodnie ze stroną podręcznika
powinien zaktualizować wszystkie zagnieżdżone moduły podrzędne. Ale część init może nie być rekurencyjna.
W zależności od wersji Git, możesz wrócić do bardziej „skryptowego” podejścia, korzystając z tego artykułu Rekurencyjne aktualizowanie podmodułów Git, który umożliwia rekurencyjne inicjowanie i aktualizację:
źródło
git clone --recursive
wystarczy?git submodule update --init <submoduleName>
modułu podrzędnego, to jest do zrobienia; Dotarłem tutaj, szukając tej odpowiedzi