我一直试图在heroku上引入一些经过验证的git repos,并遇到了一些问题.
理想情况下,我希望能够在此使用令牌解决 方案,如果令牌解决方案不是,则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
Run Code Online (Sandbox Code Playgroud)
将较新版本的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 :)
Run Code Online (Sandbox Code Playgroud)
但是,在实例上安装我们自己的git版本并不理想,因为编译和安装需要很长时间.
似乎heroku不提供任何免费支持,这是不幸的,因为我只需要告诉他们升级他们的git版本,一切都很好.但是,由于这是不可能的,有没有人有任何建议在heroku上进行经过身份验证的https git克隆?(我已经设法通过上传一个.ssh
包含repo 的特殊目录来获得经过身份验证的ssh ,但这对我们的情况并不理想,因为我们更愿意使用https和令牌).
如果 git 版本确实是 1.7.0,那么它就太旧了,因为从那时起,http 传输机制已经完成了多次修复。
(如 1.11.7:如果服务器配置为允许匿名 GET,同时需要对 POST 进行身份验证,则使用最新的 Git 推送到智能 HTTP 服务器会失败,而 URL 中没有用户名来强制进行身份验证。)
Plus 1.7.8 引入了一种缓存凭据的方法:
git push
“ ”和“ ”中使用的处理 HTTP 事务的用户名/密码的代码git fetch
学会了与外部程序对话“凭证 API”以缓存或存储它们,以允许与平台本机钥匙串机制集成。
您的 ssh 解决方法是一种方法,重新编译 git 另一种方法,但在 Heroku 升级其默认 git 之前,我没有看到另一种方法可以安全地使用 https 对 Heroku git 存储库进行身份验证。
归档时间: |
|
查看次数: |
1044 次 |
最近记录: |