Comment réécrire l'URL Git pour les sous-modules qui n'ont pas encore été clonés?

J'ai un superprojet Git avec un sous-module, qui contient lui-même un sous-module. Tout est dans des repositorys GitHub privés et est accessible via HTTPS. Cela signifie que les URL stockées dans .gitmodules et .git/config sont au format HTTPS. J'écris un mini-server de compilation qui doit extraire le dernier code, mais il doit utiliser des keys de deployment SSH car ce n'est pas un humain qui peut entrer des passwords GitHub.

L'établissement d'une règle de réécriture d'URL Git fonctionne pour le superprojet, mais il semble être ignoré par les sous-modules s'ils n'ont pas déjà été clonés:

 $ git clone https://github.com/user/superproject.git $ cd superproject $ git config url.git@github.com:.insteadOf https://github.com/ $ ssh-agent sh -c "ssh-add id_rsa-deploy-key && git submodule update submod1" 

La git submodule update à git submodule update dans cette dernière ligne ignore la règle de réécriture d'URL, utilise HTTPS et vous invite à entrer un count et un mot de passe GitHub.

Maintenant, si l'arborescence du référentiel a déjà été clonée une fois (comme avec git submodule update --init --recursive , en utilisant HTTPS), alors les règles de réécriture d'URL fonctionnent correctement et utiliseront SSH. Comment peut-on utiliser la réécriture d'URL pour le clone initial du sous-module?

Solutions Collecting From Web of "Comment réécrire l'URL Git pour les sous-modules qui n'ont pas encore été clonés?"