2017-02-23 51 views
10

Mam repozytorium git, które ma następną zależność jako submodule. W katalogu głównym mojego projektu (gdzie .git, .gitsubmodules itd. Są) ZadzwoniłemDlaczego git nie może pobrać konkretnego ważnego modułu dla danego zatwierdzenia i jak go naprawić?

git submodule update 

ta nie powiodła się z następującym komunikatem:

Pobrane w submodule ścieżki „src/ram”, ale nie zawierało cc8c38e9d853491c672452d8dbced4666fc73ec8. Bezpośrednie pobranie tego zatwierdzenia nie powiodło się.

gdzie src/framework jest podkatalog mojego projektu (PROJECT_ROOT/src/framework) i powinny być tam, gdzie wyląduje repo osób trzecich. Podany skrót zatwierdzenia jest poprawny.

Próbowałem również git clone --recursive <my-repo>, ale również się nie udało.

zawartość mojego .gitsubmodules jest

[submodule "src/framework"] 
     path = src/framework 
     url = [email protected]:gh/framework.git 

Poza tym muszę zwrócić uwagę na następujące ważny fakt: z powodu ostatnich uaktualnieniach w framework repo moich przerw kodowych stąd naprawdę muszę odzyskać tę konkretną wersję z tego, gdzie wszystko działa dobrze.

+0

* Podany skrót zatwierdzenia jest prawidłowy. * Czy masz na myśli to, że zatwierdzenie z tym hashem jest obecne w repoodu module częściowym? – Leon

+0

Tak, mogę śledzić link w mojej przeglądarce (używając GitLab) do strony, która wyświetla wszystkie zmiany, które miały miejsce z tym zatwierdzeniem, więc nie jest tak, że ktoś wykonał jakiś reset. – rbaleksandar

+0

Może to być problem z uprawnieniami. Czy możesz sklonować tylko repozytorium częściowe? – Leon

Odpowiedz

7

Tak, mogę skorzystać z linku w przeglądarce internetowej (przy użyciu GitLab)

można sklonować repo że mimo, że z commit zawarte?
GitLab ma permission level, który ograniczy dostęp, więc upewnij się, że polecenia git-clone są wykonywane przez właściwego użytkownika, oraz przez klucze ssh w wymienionym user home directory/.ssh.

Jeśli nie możesz sklonować repozytorium częściowego (w dowolnym miejscu na lokalnym dysku twardym), to objaśnionoby komunikat o błędzie.

Problem pochodzi od kogoś, kto wykonał reset głowicy do commit przed tym, który został powiązany z modułem jako w repozytorium ja pracujemy. Spowodowało to unieważnienie odwołania. Nie mam pojęcia jak to naprawić

Można make sure the submodule follows a branch (tu na przykład master):

cd /path/to/parent/repo 
git config -f .gitmodules submodule.bar1.branch master 

Następnie zaktualizować submodule na ostatni naciągane popełnić master

git submodule update --remote 

Przetwornik --remote option zapewnia, że ​​nie będzie używał rekordu SHA-1 zarejestrowanego przez superprojekt, aby zaktualizować moduł podrzędny, ale będzie zamiast tego użyj statusu zdalnego modułu śledzącego modułu podległego.

Pozwoliłoby to uniknąć komunikatu o błędzie "did not contain cc8c38e9d853491c672452d8dbced4666fc73ec8".