Routage des sous-modules Git par un proxy
Examinez les URL des sous-modules, leurs transports et la configuration des dépôts lorsque le dépôt principal fonctionne via un proxy, mais pas ses sous-modules.
Cloner le dépôt principal avec succès ne teste pas ses sous-modules. Un sous-module est un autre dépôt Git, éventuellement sur un autre hôte et avec un autre transport.
Commencez par lire les URL déclarées :
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
Un dépôt parent récupéré en HTTPS peut contenir un sous-module utilisant git@host:. Un réglage de proxy HTTP ne configure pas cette connexion SSH. Les URL relatives des sous-modules doivent aussi être résolues par rapport au remote approprié du superprojet, pas à une adresse web déduite de son nom.
Les réglages locaux ont une portée limitée
Une entrée locale http.proxy appartient au dépôt dont le fichier de configuration la contient. Ne supposez pas que l’examen du parent suffit à connaître tous les réglages effectifs d’un dépôt enfant initialisé.
Pour imposer temporairement un proxy HTTPS lors d’une mise à jour récursive, vous pouvez fournir une configuration Git en ligne de commande à cet appel :
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
Remplacez le point de connexion d’exemple. Pour des sous-modules HTTPS publics sur une route autorisant les proxys publics, la liste de proxys HTTP fournit des adresses candidates. Cela ne convertit pas les URL SSH en HTTPS. Si la route choisie est inattendue, examinez aussi les configurations plus spécifiques fondées sur l’URL.
Quand l’URL enregistrée a changé
Git enregistre localement la configuration du sous-module pendant l’initialisation. Si l’URL du sous-module a changé dans le projet, comparez la déclaration actuelle à la valeur enregistrée localement avant de conclure que le proxy est hors service. L’opération sync documentée actualise les URL enregistrées à partir de la déclaration du projet ; ce n’est pas en soi un réglage de proxy réseau.
En cas d’échec imbriqué, notez le chemin exact du sous-module et le remote cités dans l’erreur. Une opération récursive peut contacter plusieurs hôtes ; un hôte interne peut nécessiter une exception d’accès direct alors qu’un hôte public utilise le proxy.
Distinguez les erreurs de transport des erreurs du dépôt. Un commit indisponible, un accès refusé par le dépôt et un échec de connexion au proxy sont des causes différentes du même résultat général « submodule update failed ».