5

私はherokuで認証されたgitリポジトリを取得しようとしていて、いくつかの問題が発生しました。

理想的には、ここでトークンソリューション を使用できるようにしたいと思います。トークンソリューションが使用できない場合はgit pull https://<token>@github.com/username/bar.git、ソリューションを使用することもできgit pull https://username:password@github.com/username/bar.gitます。

ただし、Herokuバージョンのgit(v1.7.0)はhttps認証済みクローンと格闘しているようです。

$ heroku run bash
$ git --version
git version 1.7.0
$ git clone https://username:password@github.com/username/bar.git
Initialized empty Git repository in /app/bevry-website/.git/
error: The requested URL returned error: 401 while accessing https://username:password@github.com/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:password@github.com/username/bar.git
works fine :)

ただし、インスタンスに独自のgitバージョンをインストールすることは、コンパイルとインストールに非常に長い時間がかかるため、理想的ではありません。

herokuは無料のサポートを提供していないようですが、gitバージョンをアップグレードするように指示するだけで、すべて問題がないため、残念です。ただし、これは不可能なので、herokuで認証済みのhttps gitクローンを作成するための提案はありますか?(私はリポジトリを使用して特別なディレクトリをアップロードすることで認証されたsshを実行することができましたが.ssh、httpsとトークンのみを使用することを好むため、これは私たちの状況には理想的ではありません)。

4

2 に答える 2

4

gitバージョンが実際に1.7.0である場合、それ以降、httpトランスポートメカニズムで複数の修正が行われたため、古すぎます。
(1.11.7のように:サーバーがPOSTの認証を要求しながら、匿名でGETを許可するように構成されている場合、認証を強制するためにURLにユーザー名がないと、最近のGitを使用したスマートHTTPサーバーへのプッシュは失敗します。)

Plus 1.7.8では、資格情報をキャッシュする方法が導入されています。

git push" "& ""で使用されるHTTPトランザクションのユーザー名/パスワードを処理するコードはgit fetch、プラットフォームのネイティブキーチェーンメカ​​ニズムとの統合を可能にするために、外部プログラムと「クレデンシャルAPI」を通信してキャッシュまたは保存することを学習しました。

sshの回避策は1つの方法で、gitを別の方法で再コンパイルしますが、herokuがデフォルトのgitをアップグレードするまで、Herokugitリポジトリのhttpsで安全に認証する別の方法はありません。

于 2012-10-19T06:33:39.997 に答える
2

私はまったく同じ問題を抱えていました:

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

Githubのユーザー名として電子メールを使用しました。これは、Herokuのgit(バージョン1.7)ではサポートされていません。

git clone https://username:password@github.com/username/bar.git

電子メールではなく実際のGithubユーザー名を使用する場合は機能します。

電子メールは、新しいバージョンのGitではユーザー名として機能します。

于 2012-11-01T08:28:16.130 に答える