2012-10-18 61 views
5

我一直試圖在heroku上拉入一些經過驗證的git回購,並且遇到了一些問題。在heroku上拉入經過身份驗證的git回購

理想情況下,如果令牌解決方案不是,我希望能夠使用token solution heregit pull https://<token>@github.com/username/bar.git或甚至是git pull https://username:[email protected]/username/bar.git解決方案是可以接受的。

然而,似乎混帳(V1.7.0)的Heroku的版本鬥爭與HTTPS驗證克隆:

$ 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 

安裝的git(v1.7.12)到Heroku的實例的新版本,並使用該工作正常:

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

但是,在實例上安裝我們自己的git版本並不理想,因爲編譯和安裝需要很長時間。

看來,heroku不提供任何免費支持,這是不幸的,因爲我只需要告訴他們升級他們的git版本,一切都很好。但是,因爲這是不可能的,有沒有人有任何建議在Heroku上進行身份驗證的https git克隆? (我設法通過上傳一個特殊的.ssh目錄來獲得經過身份驗證的ssh,但是這對於我們的情況並不理想,因爲我們更喜歡使用https和令牌)。

回答

4

如果git版本確實是1.7.0,那麼它太舊了,因爲自從http傳輸機制以來已經完成了多個修復。
(如1.11.7:如果服務器配置爲允許匿名GET,同時要求POST驗證,則推送到最近Git帶有用戶名的強制認證失敗的智能HTTP服務器。)

Plus 1.7.8介紹的方式來緩存憑據:

處理爲「git push」 &「git fetch」使用HTTP交易用戶名/密碼的代碼學會說話「憑據API」外部程序緩存或存儲他們,允許與平臺原生鑰匙串機制集成。

你的SSH的解決方法是一種方法,重新編譯git的另一個,但直到Heroku的升級其默認混帳,我沒有看到另一種方式來安全地HTTPS驗證了Heroku的git的回購協議。

+0

謝謝:)也許我可以在twitter上喧譁一些heroku員工,讓git更新:) – balupton

2

我只是有相同的問題:

$ 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 

我用電子郵件作爲用戶名Github上。 Heroku的git(版本1.7)不支持這個功能。

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

它的工作原理,如果你使用實際的Github用戶名,而不是你的電子郵件。

這封電子郵件的用戶名與新版Git版本相同。

相關問題