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 № 1Cóż, 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.