2012-10-18 12 views
5

Próbowałem pobrać autentyczne repozytorium git na Heroku i napotkałem kilka problemów.Wyciąganie uwierzytelnionych repozytoriów git na Heroku

Najlepiej byłoby, gdyby można było używać rozwiązania token solution heregit pull https://<token>@github.com/username/bar.git lub nawet git pull https://username:[email protected]/username/bar.git, jeśli rozwiązanie tokena nie jest możliwe.

Jednak wydaje wersję Heroku git (v1.7.0) zmaga się od https uwierzytelnionych klonów:

$ heroku run bash 
$ git --version 
git version 1.7.0 
$ git clone https://username:[email protected]/username/bar.git 
Initialized empty Git repository in /app/bevry-website/.git/ 
error: The requested URL returned error: 401 while accessing https://username:[email protected]/username/bar.git/info/refs 
fatal: HTTP request failed 

Instalacja nowszej wersji git (v1.7.12) na przykład Heroku i stosując że działa dobrze :

$ heroku run bash 
$ curl --silent --location http://git-core.googlecode.com/files/git-1.7.12.tar.gz | tar xz; cd git-1.7.12; make NO_TCLTK=YesPlease NO_PERL=YesPlease NO_GETTEXT=YesPlease NO_SVN_TESTS=YesPlease NO_MSGFMT=YesPlease NO_MSGFMT_EXTENDED_OPTIONS=YesPlease prefix=$HOME install; cd ..; rm -Rf git-1.7.12 
$ ./bin/git --version 
git version 1.7.12 
$ ./bin/git clone https://username:[email protected]/username/bar.git 
works fine :) 

Jednak zainstalowanie naszej własnej wersji git na instancji nie jest idealne, ponieważ kompilacja i instalacja trwa bardzo długo.

Wygląda na to, że Heroku nie oferuje żadnego bezpłatnego wsparcia, co jest niefortunne, ponieważ po prostu muszę im powiedzieć, żeby uaktualnili swoją wersję git i wszystko jest w porządku. Jednakże, ponieważ nie jest to możliwe, czy ktoś ma jakieś sugestie dotyczące robienia autentycznych klonów git https na heroku? (Udało mi się uwierzytelnić ssh, ładując specjalny repozytorium z katalogu .ssh, jednak nie jest to idealne rozwiązanie dla naszej sytuacji, ponieważ wolimy używać tylko https i tokenów).

Odpowiedz

4

Jeśli wersja git jest rzeczywiście 1.7.0, to jest zbyt stary, ponieważ wiele poprawek zostały wykonane od tego czasu mechanizm transportu http.
(jak 1.11.7: Pchanie na serwerze HTTP inteligentnej z niedawnym Git nie bez nazwy użytkownika w adresie URL, aby wymusić uwierzytelniania, jeśli serwer jest skonfigurowany tak, aby umożliwić GET anonimowo, podczas wymagających uwierzytelniania dla POST.)

Plus 1.7.8 wprowadza sposób buforowania poświadczeń:

Kod do obsługi login/hasło do transakcji HTTP używanych w „git push” & „git fetch” nauczył się mówić „poświadczeń API” do zewnętrznych programów do pamięci podręcznej lub sklepu w celu umożliwienia integracji z natywnymi mechanizmami pęku kluczy.

Twój ssh obejście jest jednym ze sposobów, rekompilacji git inny, ale dopóki Heroku uaktualnić swoją domyślną git, nie widzę innej drogi do bezpiecznego uwierzytelniania https dla Heroku repo git.

+0

Dzięki :) Może uda mi się zgarnąć trochę pracowników Heroku na Twittera, aby zaktualizować git :) – balupton

2

prostu miałem dokładnie ten sam problem:

$ git clone https://username:[email protected]/username/bar.git 
Initialized empty Git repository in /app/bevry-website/.git/ 
error: The requested URL returned error: 401 while accessing https://username:[email protected]/username/bar.git/info/refs 
fatal: HTTP request failed 

użyłem e-mail jako nazwę użytkownika Github. Nie jest to obsługiwane przez git Heroku (wersja 1.7).

git clone https://username:[email protected]/username/bar.git 

Działa, jeśli używasz rzeczywistej nazwy użytkownika Github, a NIE adresu e-mail.

Wiadomość e-mail działa jako nazwa użytkownika w nowszych wersjach Git.

Powiązane problemy