2010-01-02 27 views
10

Dostaję powiesić submodule Git (życzeniowe myślenie?) I mam zamiar bardziej szczegółowe pytania, co jest dobrym znakiem ...aktualizacja modułu git potrzebna tylko początkowo?

Próbowałem znaleźć, która wersja submodule superprojekt odnosi się do: .gitmodules i .git/config, ale nic tam nie jest wymienione ...
Scenariusz polega na tym, że zmieniam submoduły w ich lokalizacjach źródłowych (z których są importowane), a następnie przeciągając je tam, gdzie są "re" submoduled "...
Poza zobowiązaniem się z superprojektu do włączenia tych zmian do repozytorium superprojektowego, czy muszę również wykonać" git update ", aby zarejestrować nowe wciągnięte zatwierdzone submoduły?

Zasadniczo pytanie brzmi:

muszę „git submodule update” tylko wtedy, gdy po raz pierwszy sklonować superproject lub po każdym wyciągając z modułem (z własnej repo)?

Dziękuję

+0

Przepraszamy za spóźnioną odpowiedź, nie widziałem nowego pytania po poprzednim (http://stackoverflow.com/questions/1979167) – VonC

Odpowiedz

15

Jak wspomniano w poprzednim odpowiedzi git submodule update, że kontrole poleceń zewnątrz konkretnej wersji projektu bazowego na swoim pliku .gitmodules.

The GitPro page does insist:

Jest to ważny punkt z submodułów: nagrać je jako dokładny popełniają oni w.

Można zobaczyć które zobowiązują odwołuje działa w ramach „super projektu” (ten, odwołującego jedną lub kilka submodules):

  • git submodule status (chyba że zrobiłeś jakiś popełnić bezpośrednio w tym modułem, thinat przypadku będzie to pokazać „+” przed SHA-1 z HEAD jakiejkolwiek modułem, który posiada zaawansowane od SHA-1 przechowywanych w superproject) lub
  • git ls-files --stage szuka wpisu w trybie „160000”, specjalny wpis w Żołnierz amerykański t indeks.

Oznacza to, że za każdym razem wykonać polecenie git w „super” projektu, który mógłby zmienić, że modułem popełnić SHA1, potrzebny jest „git submodule update”.

Czy muszę "git submodule update" tylko wtedy, gdy po raz pierwszy sklonuję superprojekt lub po każdym ciągnięciu modułu (z własnego repozytorium)?

Tak, musisz to robić za każdym razem, gdy usuniesz zmianę modułu w głównym projekcie.
Dzieje się tak dlatego, że odnosisz się do dokładnego zatwierdzenia oryginalnego repoodu częściowego (jak wspomniano powyżej), a kiedy pobierzesz to repo, skutecznie modyfikujesz to zatwierdzenie.