Clonar correctamente o repositorio principal non pon a proba os seus submódulos. Un submódulo é outro repositorio Git, quizais noutro host e cun transporte distinto.

Comeza por ler os URL declarados:

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

Un repositorio pai obtido por HTTPS pode conter un submódulo que use git@host:. Un axuste de proxy HTTP non configura esa conexión SSH. Os URL relativos dos submódulos tamén deben resolverse respecto do remoto axeitado do superproxecto, non dun enderezo web suposto a partir do nome do proxecto.

A configuración local ten un ámbito

Unha entrada local http.proxy pertence ao repositorio cuxo ficheiro de configuración a contén. Non supoñas que revisar só o pai revela todos os axustes efectivos dentro dun repositorio fillo inicializado.

Para impor temporalmente un proxy HTTPS durante unha actualización recursiva, podes pasar a configuración de liña de comandos de Git a esa invocación:

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

Substitúe o punto de conexión de exemplo. Para submódulos HTTPS públicos nunha ruta que permita proxies públicos, a lista de proxies HTTP ofrece enderezos candidatos. Isto non converte os URL SSH dos submódulos en HTTPS; se a ruta elixida sorprende, tamén convén revisar a configuración máis específica por URL.

Cando cambiou o URL rexistrado

Git rexistra localmente a configuración do submódulo durante a inicialización. Se o URL do submódulo cambiou no proxecto, compara a declaración actual co valor rexistrado localmente antes de decidir que o proxy non funciona. A operación sync documentada actualiza os URL rexistrados a partir da declaración do proxecto; non é en si mesma un axuste de proxy de rede.

Nos fallos aniñados, anota a ruta exacta do submódulo e o remoto indicado no erro. Unha operación recursiva pode contactar con varios hosts; un interno pode necesitar unha excepción de conexión directa mentres un público usa o proxy.

Distingue os erros de transporte dos erros do repositorio. Un commit non dispoñible, o acceso denegado polo repositorio e unha conexión fallida ao proxy son causas distintas do mesmo resultado xeral «submodule update failed».

Artigos relacionados