Routing proxy dla podmodułów Git
Sprawdzaj adresy URL podmodułów, typy transportu i konfigurację repozytorium, gdy główny checkout Git działa przez proxy, a jego dzieci nie.
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ę”.