Proxyroutering voor Git-submodules
Controleer URL’s van submodules, transporttypen en repositoryconfiguratie wanneer de hoofdcheckout via een proxy werkt maar de onderliggende repositories niet.
Een geslaagde kloon van de hoofdrepository test de submodules niet. Een submodule is een andere Git-repository, mogelijk op een andere host en met een ander transport.
Begin met het lezen van de gedeclareerde URL’s:
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
Een ouderrepository die via HTTPS is opgehaald kan een submodule met git@host: bevatten. Een HTTP-proxyinstelling configureert die SSH-verbinding niet. Relatieve submodule-URL’s moeten worden opgelost tegen de juiste remote van het superproject, niet tegen een webadres dat uit de projectnaam is afgeleid.
Lokale repository-instellingen hebben een bereik
Een lokale http.proxy-vermelding hoort bij de repository waarvan het configuratiebestand deze bevat. Alleen de ouder controleren toont niet alle actieve instellingen in een geïnitialiseerde kindrepository.
Geef bij een recursieve update een tijdelijke HTTPS-proxy mee via Git-configuratie op de opdrachtregel:
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
Vervang het voorbeeld-endpoint. Voor openbare HTTPS-submodules op een route die openbare proxy’s toestaat biedt de HTTP-proxylist kandidaatadressen. Dit zet SSH-URL’s niet om naar HTTPS; controleer bij een onverwachte route ook specifiekere URL-instellingen.
Wanneer de geregistreerde URL is gewijzigd
Git registreert de submoduleconfiguratie lokaal tijdens initialisatie. Vergelijk de huidige verklaring met de lokale waarde voordat je de proxy de schuld geeft. De gedocumenteerde sync-bewerking werkt geregistreerde URL’s bij vanuit de projectverklaring; zelf is zij geen netwerkproxyinstelling.
Noteer bij geneste fouten het exacte submodulepad en de remote uit de foutmelding. Een recursieve bewerking kan meerdere hosts bereiken; een interne host heeft mogelijk een directe uitzondering nodig terwijl een openbare host de proxy gebruikt.
Houd transportfouten gescheiden van repositoryfouten. Een ontbrekende commit, geweigerde toegang en mislukte proxyverbinding zijn verschillende oorzaken van hetzelfde algemene resultaat ‘submodule update failed’.