2015-04-01 2 views
0

Je travaille avec un proxy qui n'aime pas git. Dans la plupart des cas, je peux utiliser export http_proxy et git config --global url."http://".insteadOf git://. Mais quand j'utilise le script python de Yocto, cette solution de contournement ne fonctionne plus. Je suis systématiquement arrêté au Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-3.14.git.... Je soupçonne que ces lignes d'être responsable:Utilisation de git derrière un proxy dans les scripts python

gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl) 
tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read() 

Je pense que, après ces lignes, d'autres vont essayer de se connecter à git url. Le script que j'utilise (yocto-bsp) appelle d'autres scripts, qui appellent des scripts, donc c'est difficile à dire. J'ai essayé d'ajouter os.system(git config --global url."http://".insteadOf git://) juste avant, mais ça fait des cacahuètes.

Bien sûr, je pourrais essayer de modifier toutes les URL manuellement (ou avec un script d'analyse syntaxique) pour remplacer git:// par http:// manuellement, mais cette solution est ... hideuse. J'aimerais que la ou les modifications soient aussi petites que possible et reproductibles facilement. Mais surtout, j'aimerais un script de travail.

EDIT: selon this page, l'URL git est git://git.yoctoproject.org/linux-yocto-3.14 mais l'URL http est http://git.yoctoproject.org/git/linux-yocto-3.14 correspondant, donc je ne peux pas analyser simplement de remplacer git:// par http://. Certainement pas cool.

Répondre

1

Eh bien, réécrire l'URL git fonctionne en effet, même lors de l'utilisation de YP. Cependant, le schéma de réécriture ne fonctionne pas très bien ... Vous remplacez juste la partie git: // ou l'URL par http: //, mais si vous regardez par exemple. linux-yocto-3.14, vous verrez que cette prise en pension est disponible dans les deux URL suivantes:

git://git.yoctoproject.org/linux-yocto-3.14 
http://git.yoctoproject.org/git/linux-yocto-3.14 

qui vous devez réécrire git://git.yoctoproject.org-http://git.yoctoproject.org/git. Ainsi, vous devrez le faire à la place:

git config --global url."http://git.yoctoproject.org/git".insteadOf git://git.yoctoproject.org 

Ce qui signifie que vous devrez répéter cet exercice pour tous les dépôts qui sont accessibles via le protocole git.