Udane sklonowanie głównego repozytorium nie sprawdza jego podmodułów. Podmoduł jest innym repozytorium Git, być może na innym hoście i być może używającym innego transportu.

Zacznij od odczytania zadeklarowanych adresów URL:

git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive

Nadrzędne repozytorium pobrane przez HTTPS może zawierać podmoduł używający git@host:. Ustawienie proxy HTTP nie konfiguruje tego połączenia SSH. Względne adresy URL podmodułów trzeba też rozwiązać względem właściwego zdalnego repozytorium superprojektu, a nie względem dowolnego adresu internetowego założonego na podstawie nazwy projektu.

Ustawienia lokalne repozytorium mają określony zakres

Lokalny wpis http.proxy należy do repozytorium, którego plik konfiguracyjny go zawiera. Nie zakładaj, że sprawdzenie samego repozytorium nadrzędnego pokaże wszystkie ustawienia używane wewnątrz zainicjalizowanego repozytorium potomnego.

Przy tymczasowym wymuszeniu proxy HTTPS dla rekurencyjnej aktualizacji konfigurację Git z wiersza poleceń można przekazać do danego wywołania:

git -C project -c http.proxy=http://203.0.113.10:8080 \
  submodule update --init --recursive

Zastąp przykładowy punkt końcowy własnym. Jeśli publiczne podmoduły HTTPS korzystają z trasy, na której dozwolone są publiczne proxy, lista proxy HTTP podaje możliwe adresy. Nie zamienia to adresów SSH podmodułów na HTTPS; gdy wybrana trasa zaskakuje, sprawdź również konfigurację bardziej szczegółową dla adresu URL.

Gdy zapisany adres URL się zmienił

Git rejestruje konfigurację podmodułu lokalnie podczas inicjalizacji. Jeśli adres URL podmodułu w projekcie się zmienił, porównaj bieżącą deklarację z wartością zarejestrowaną lokalnie, zanim uznasz proxy za niesprawne. Udokumentowana operacja synchronizacji aktualizuje zarejestrowane adresy URL na podstawie deklaracji projektu; sama nie jest ustawieniem proxy sieciowego.

Przy zagnieżdżonych błędach zanotuj dokładną ścieżkę podmodułu i zdalne repozytorium wymienione w błędzie. Operacja rekurencyjna może łączyć się z wieloma hostami, a host wewnętrzny może wymagać bezpośredniego wyjątku, podczas gdy host publiczny używa proxy.

Oddziel błędy transportu od błędów repozytorium. Niedostępny commit, odmowa dostępu do repozytorium i nieudane połączenie z proxy to różne przyczyny tego samego ogólnego komunikatu „aktualizacja podmodułu nie powiodła się”.

Powiązane artykuły