Clonar correctament el repositori principal no posa a prova els seus submòduls. Un submòdul és un altre repositori Git, potser en un altre host i amb un altre transport.

Comenceu llegint els URL declarats:

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

Un repositori pare obtingut per HTTPS pot contenir un submòdul que faci servir git@host:. Configurar un proxy HTTP no configura aquesta connexió SSH. Els URL relatius dels submòduls també s’han de resoldre respecte del remot adequat del superprojecte, no respecte d’una adreça web deduïda del nom del projecte.

Els ajustos locals tenen un abast

Una entrada local http.proxy pertany al repositori que la conté al seu fitxer de configuració. No suposeu que revisar només el pare revela tots els ajustos efectius dins d’un repositori fill inicialitzat.

Per imposar temporalment un proxy HTTPS durant una actualització recursiva, podeu passar la configuració de línia d’ordres de Git a aquella invocació:

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

Substituïu el punt de connexió d’exemple. Per als submòduls HTTPS públics en una ruta que permeti proxies públics, la llista de proxies HTTP ofereix adreces candidates. Això no converteix els URL SSH dels submòduls en HTTPS; si la ruta triada sorprèn, també convé revisar les configuracions més específiques per URL.

Quan ha canviat l’URL registrat

Git registra localment la configuració del submòdul durant la inicialització. Si l’URL del submòdul ha canviat al projecte, compareu la declaració actual amb el valor registrat localment abans de decidir que el proxy no funciona. L’operació sync documentada actualitza els URL registrats a partir de la declaració del projecte; no és, per si mateixa, un ajust del proxy de xarxa.

Si falla un submòdul imbricat, anoteu-ne el camí exacte i el remot indicat a l’error. Una operació recursiva pot contactar amb diversos hosts; un host intern pot necessitar una excepció de connexió directa mentre un de públic fa servir el proxy.

Distingiu els errors de transport dels errors del repositori. Un commit no disponible, l’accés denegat pel repositori i una connexió fallida al proxy són motius diferents del mateix resultat general «submodule update failed».

Articles relacionats