Um clone bem-sucedido do repositório principal não testa seus submódulos. Um submódulo é outro repositório Git, possivelmente em outro host e possivelmente usando outro transporte.

Comece lendo as URLs declaradas:

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

Um repositório pai obtido por HTTPS pode conter um submódulo que usa git@host:. Uma configuração de proxy HTTP não configura essa conexão SSH. URLs relativas de submódulos também precisam ser resolvidas em relação ao remoto apropriado do superprojeto, e não a qualquer endereço web presumido pelo nome do projeto.

As configurações locais do repositório têm um escopo

Uma entrada local http.proxy pertence ao repositório cujo arquivo de configuração a contém. Não presuma que inspecionar apenas o pai revele todas as configurações usadas dentro de um repositório filho inicializado.

Para uma substituição temporária de proxy HTTPS durante uma atualização recursiva, a configuração de linha de comando do Git pode ser fornecida àquela execução:

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

Substitua o endpoint de exemplo. Para submódulos HTTPS públicos em uma rota que permita proxies públicos, a lista de proxies HTTP oferece endereços candidatos. Isso não converte URLs SSH de submódulos para HTTPS; verifique também uma configuração específica da URL quando a rota surpreender.

Quando a URL registrada mudou

O Git registra localmente a configuração do submódulo durante a inicialização. Se a URL do submódulo mudou no projeto, compare a declaração atual com o valor registrado antes de concluir que o proxy está inoperante. A sincronização documentada atualiza as URLs registradas a partir da declaração do projeto; ela não é uma configuração de proxy de rede.

Em falhas aninhadas, anote o caminho exato do submódulo e o remoto citado no erro. Uma operação recursiva pode contatar vários hosts, e um host interno pode exigir exceção direta enquanto um host público usa o proxy.

Mantenha erros de transporte separados de erros do repositório. Um commit indisponível, acesso negado e conexão falha com o proxy são motivos diferentes para o mesmo resultado “falha ao atualizar o submódulo”.

Artigos relacionados