2012-10-18 24 views
5

Ho cercato di inserire alcuni repository git autenticati su heroku e ho riscontrato alcuni problemi.Estrazione di repository git autenticati su heroku

Idealmente, mi piacerebbe essere in grado di utilizzare la token solution heregit pull https://<token>@github.com/username/bar.git o anche una soluzione git pull https://username:[email protected]/username/bar.git è accettabile se la soluzione token non è.

Tuttavia, sembra che la versione Heroku di git (v1.7.0) lotta con https cloni autenticati:

$ 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 

L'installazione di una versione più recente di Git (v1.7.12) sul l'istanza Heroku e l'utilizzo che funziona bene :

$ 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 :) 

Tuttavia, l'installazione la nostra versione git per l'istanza non è l'ideale come ci vuole un tempo molto lungo per compilare e installare.

Sembra che heroku non offra alcun supporto gratuito, il che è unfortunte in quanto ho solo bisogno di dire loro di aggiornare la loro versione git e tutto va bene. Tuttavia, poiché ciò non è possibile, qualcuno ha qualche suggerimento per fare cloni git https autenticati su heroku? (Sono riuscito ad ottenere l'autenticazione ssh andando caricando una directory speciale .ssh con il repository, tuttavia non è l'ideale per la nostra situazione, in quanto preferiremmo semplicemente usare https e token).

risposta

4

Se la versione git è effettivamente 1.7.0, quindi è troppo vecchia, poiché sono state fatte più correzioni da allora il meccanismo di trasporto http.
(come 1.11.7: Spingendo al server HTTP intelligente con recente Git fallisce senza avere il nome utente nell'URL per forzare l'autenticazione, se il server è configurato per consentire GET anonima, mentre richiede l'autenticazione per POST.)

più 1.7.8 introduce un modo per mettere in cache le credenziali:

Il codice per gestire il nome utente/password per le transazioni HTTP utilizzati in "git push" & "git fetch" imparato a parlare "API delle credenziali" per programmi esterni per cache o negozio loro, per consentire l'integrazione con meccanismi di portachiavi nativi della piattaforma.

tua soluzione SSH è un modo, ricompilando git un'altra, ma fino Heroku aggiornare la propria git di default, non vedo altro modo per autenticare in modo sicuro con https per Heroku repo git.

+0

Grazie :) Forse posso spostare alcuni dipendenti di heroku su Twitter per ottenere git aggiornato :) – balupton

2

Ho appena avuto lo stesso identico problema:

$ 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 

ho usato la posta elettronica come nome utente per Github. Questo non è supportato da git di Heroku (versione 1.7).

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

Funziona, se si utilizza il nome utente Github effettivo e NON la propria e-mail.

L'e-mail funziona come nome utente con le versioni Git più recenti.