Směrování podmodulů Git přes proxy
Když hlavní repozitář Git funguje přes proxy, ale jeho podmoduly ne, zkontrolujte URL podmodulů, transporty a konfiguraci repozitářů.
Úspěšné klonování hlavního repozitáře netestuje jeho podmoduly. Podmodul je další repozitář Git, možná na jiném hostiteli a s jiným transportem.
Začněte přečtením deklarovaných URL:
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
Rodičovský repozitář získaný přes HTTPS může obsahovat podmodul s git@host:. Nastavení HTTP proxy nekonfiguruje toto spojení SSH. Relativní URL podmodulů je také nutné vyhodnotit vůči příslušnému vzdálenému repozitáři nadřazeného projektu, nikoli vůči webové adrese odhadnuté z názvu projektu.
Lokální nastavení repozitáře má svůj rozsah
Lokální položka http.proxy patří repozitáři, jehož konfigurační soubor ji obsahuje. Nepředpokládejte, že kontrola pouze rodiče odhalí všechna účinná nastavení v inicializovaném podřízeném repozitáři.
Chcete-li dočasně přepsat HTTPS proxy pro rekurzivní aktualizaci, můžete příslušnému volání předat konfiguraci Git z příkazového řádku:
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
Nahraďte ukázkový koncový bod. Pro veřejné podmoduly HTTPS na trase, kde jsou veřejné proxy povoleny, nabízí seznam HTTP proxy možné adresy. Tím se URL podmodulů SSH nepřevádějí na HTTPS; pokud je vybraná trasa překvapivá, prověřte i konkrétnější konfiguraci podle URL.
Když se zaznamenaná URL změnila
Git při inicializaci registruje konfiguraci podmodulu lokálně. Pokud se URL podmodulu v projektu změnila, porovnejte aktuální deklaraci s lokálně registrovanou hodnotou, než usoudíte, že proxy nefunguje. Dokumentovaná operace sync aktualizuje registrované URL z deklarace projektu; sama není nastavením síťové proxy.
Při selhání vnořeného podmodulu si poznamenejte přesnou cestu a vzdálený repozitář uvedený v chybě. Rekurzivní operace může kontaktovat několik hostitelů; interní hostitel může potřebovat výjimku pro přímé spojení, zatímco veřejný používá proxy.
Oddělujte chyby transportu od chyb repozitáře. Nedostupný commit, přístup odmítnutý repozitářem a selhání spojení s proxy jsou různé příčiny stejného obecného výsledku „submodule update failed“.