2011-01-05 13 views
15

Pracuję nad projektem w jednym repozytorium git (A), które zawiera inne repozytorium git (B), które z kolei zawiera trzecie repozytorium git (C). W A, B dodałem poprzez:Dodanie submodułu git zawierającego kolejny moduł?

git submodule add https://github.com/blt04/sfDoctrine2Plugin.git plugins/sfDoctrine2Plugin 

Click here, i można zobaczyć, gdzie referencje B C: https://github.com/doctrine/doctrine2

Po zrobieniu moja git modułem dodawać, mój folder plugins/sfDoctrine2Plugin/lib/vendor/doctrine (powinien zawierać C) jest pusta. Próbowałem wykonać git submodule update --recursive według this StackOverflow answer, ale nadal nie importowałem plików do tej ścieżki. Nie mam pojęcia, co tu robić.

+1

można również ponownie sklonować repozytorium za pomocą "git clone --recursive " –

Odpowiedz

38

Należy wykonać git submodule update --init --recursive. Problem polega na tym, że moduł podrzędny C nigdy nie jest inicjowany w pierwszej kolejności.

+1

Wow, to wystarczyło. Nie wiem, dlaczego Git nie jest na tyle sprytny, żeby to zrobić. No cóż, dziękuję! –

+1

git zakłada, że ​​jeśli nie zainicjowałeś modułu, to dlatego, że go nie chcesz. Jest to mylące dla początkujących, ale może być bardzo przydatne w przypadkach, w których moduł opcjonalny jest opcjonalny. –

+2

Zawsze dziwi mnie, że nie możesz po prostu zrobić: git submodule add --recursive . –

Powiązane problemy