/ / Używanie git za proxy w skrypcie Pythona - python, linux, git, proxy, yocto

Używanie git za proxy w skrypcie Pythona - python, linux, git, proxy, yocto

Pracuję z proxy, które nie lubię git. W większości przypadków mogę używać export http_proxy i git config --global url."http://".insteadOf git://.

Ale kiedy używam skryptu python Yocto, obejście to nie działa. Jestem systematycznie zatrzymywany Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-3.14.git.... Podejrzewam, że linie te są odpowiedzialne:

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

Myślę, że po tych liniach inni spróbują połączyć się z URL-em git. Skrypt, którego używam (yocto-bsp) wywołuje inne skrypty, które wywołują skrypty, więc trudno powiedzieć. Próbowałem dodać os.system(git config --global url."http://".insteadOf git://) tuż przed, ale robi orzeszki ziemne.

Oczywiście, mógłbym spróbować zmodyfikować cały adres URL ręcznie (lub za pomocą skryptu parsującego), aby go zastąpić git:// przez http:// ręcznie, ale to rozwiązanie jest ... ohydne. Chciałabym, żeby modyfikacja była możliwie jak najmniejsza i łatwa do odtworzenia, ale przede wszystkim chciałbym pracować nad scenariuszem.

EDYCJA: zgodnie z ta strona, adres URL git jest git://git.yoctoproject.org/linux-yocto-3.14 ale korespondujący adres URL http to http://git.yoctoproject.org/git/linux-yocto-3.14, więc nie mogę po prostu parsować, aby zastąpić git:// przez http://. Zdecydowanie nie jest cool.

Odpowiedzi:

1 dla odpowiedzi № 1

Cóż, przepisanie adresu URL git rzeczywiście działa, także podczas korzystania z YP.

Jednak schemat ponownego zapisu nie działa tak dobrze ... Zamieniasz po prostu część git: // lub adres URL na http: //, ale jeśli spojrzysz np. linux-yocto-3.14, zobaczysz, że to repozytorium jest dostępne przez dwa następujące adresy URL:

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

To musisz przepisać git://git.yoctoproject.org do http://git.yoctoproject.org/git. Dlatego będziesz musiał to zrobić zamiast:

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

Co oznacza, że ​​będziesz musiał powtórzyć to ćwiczenie dla wszystkich repozytoriów, do których można uzyskać dostęp za pośrednictwem protokołu git.