2012-10-18 23 views
5

Tôi đã cố gắng để kéo một số repo git xác thực trên heroku, và nhấn một vài vấn đề.Kéo trong repo git xác thực trên heroku

Lý tưởng nhất, tôi rất muốn có thể sử dụng token solution heregit pull https://<token>@github.com/username/bar.git hoặc thậm chí giải pháp git pull https://username:[email protected]/username/bar.git được chấp nhận nếu giải pháp mã thông báo không được.

Tuy nhiên, có vẻ như phiên bản Heroku của git (v1.7.0) đấu tranh với https nhái chứng thực:

$ 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 

Cài đặt một phiên bản mới hơn của git (v1.7.12) vào trường hợp Heroku và sử dụng rằng hoạt động tốt :

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

Tuy nhiên, việc cài đặt phiên bản git riêng của chúng tôi không phải là lý tưởng vì phải mất rất nhiều thời gian để biên dịch và cài đặt.

Có vẻ như heroku không cung cấp bất kỳ hỗ trợ miễn phí nào, điều này thật không may vì tôi chỉ cần yêu cầu họ nâng cấp phiên bản git của họ và tất cả đều tốt. Tuy nhiên, vì điều này là không thể, bất cứ ai có bất cứ đề nghị để làm xác thực https git nhái trên heroku? (Tôi đã quản lý để có được xác thực ssh đi bằng cách tải lên một thư mục đặc biệt .ssh với repo, tuy nhiên đó không phải là lý tưởng cho tình hình của chúng tôi vì chúng tôi muốn chỉ sử dụng https và thẻ).

Trả lời

4

Nếu phiên bản git thực sự là 1.7.0, thì nó quá cũ, vì nhiều bản sửa lỗi đã được thực hiện kể từ đó cơ chế truyền tải http.
(như 1.11.7: Đẩy vào máy chủ HTTP thông minh với Git gần đây không thành công mà không có tên người dùng trong URL để buộc xác thực, nếu máy chủ được định cấu hình để cho phép GET ẩn danh, trong khi yêu cầu xác thực cho POST.)

Plus 1.7.8 giới thiệu một cách để cache các thông tin:

các mã để xử lý tên người dùng/mật khẩu cho các giao dịch HTTP được sử dụng trong "git push" & "git fetch" học cách nói "API chứng chỉ" cho các chương trình bên ngoài để bộ nhớ cache hoặc cửa hàng chúng, để cho phép tích hợp với các cơ chế keychain gốc nền tảng.

Giải pháp ssh của bạn là một cách, biên dịch lại git khác, nhưng cho đến khi heroku nâng cấp git mặc định của nó, tôi không thấy cách nào khác để xác thực an toàn với https cho Heroku git repos.

+0

Cảm ơn :) Có lẽ tôi có thể hối hả một số nhân viên heroku trên twitter để tải xuống git :) – balupton

2

Tôi chỉ có cùng một vấn đề chính xác:

$ 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 

tôi đã sử dụng e-mail như tên người dùng cho Github. Điều này không được hỗ trợ bởi git của Heroku (phiên bản 1.7).

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

Nó hoạt động, nếu bạn sử dụng tên người dùng Github thực tế và KHÔNG gửi e-mail của bạn.

Email hoạt động như tên người dùng có phiên bản Git mới hơn.

Các vấn đề liên quan