我正在尝试将内容从工作站推送到服务器。但它给了我一个错误。请查看以下命令和错误:
Administrator@ganesh ~/testing
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 241 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@ganesh:repositories/testing
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@ganesh:repositories/testing'
似乎我需要设置环境变量GL_RC
。是这样吗?
这里的任何人都可以告诉我问题可能是什么以及我如何解决它?我在Windows Server 2003上使用gitolite。
答案 0 :(得分:9)
如文档ssh troubleshooting所示,这可能是由于克隆过程中路径不正确造成的。
文档(下面的某些部分仅对Gitolite V2有效)提及:
第二个错误
(即“你能够克隆存储库但无法推回更改(错误抱怨GL_RC
环境变量未设置,并且钩子/更新以某种方式失败)
如果您使用git@server:repositories/reponame.git
(假设默认设置 - Gitolite V3,它始终为$REPO_BASE
~/repositories
),则会发生- 这是,你使用了完整的unix路径 由于上面提到的“前缀”不是必需的,shell会发现repo和clones ok 但是当你推动时,gitolite的更新钩子会启动,并且无法运行,因为它所期望的某些环境变量不存在。
成功运行“easy-install”程序时出现的消息显然包含以下警告:
*Your* URL for cloning any repo on this server will be
gitolite:reponame.git
*Other* users you set up will have to use
<user>@<server>:reponame.git
However, if your server uses a non-standard ssh port, they should use
ssh://<user>@<server>:<port>/reponame.git
所以在你的情况下,你必须克隆你的回购:
git clone git@ganesh:repositories/testing.git
而不是:
git@ganesh:testing.git
答案 1 :(得分:2)
得到了同样的错误。
正确答案是您需要使用git clone gitolite:repo_name
命令克隆存储库并git push gitolite:repo_name
推送更改,而不是git clone git@yourservername:repo_name
。
答案 2 :(得分:2)
http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html(以及gitolite源代码库)中的ssh故障排除文档现已完全重新处理。我希望它能更好地流动,并且更容易解释,包括这个特定的错误。
我还要补充一点,理想情况下,您应该完整地阅读该文档,至少是第一次。
Sitaram
答案 3 :(得分:2)
尝试:
ssh git@ganesh
你应该看到gitolite-shell而不是bash:
ssh git@localhost
PTY allocation request failed on channel 0 hello
id_rsa, the gitolite version here is 2.0.3-2 (Debian) the gitolite
config gives you the following access:
R W gitolite-admin
@R_ @W_ testing
Connection to localhost closed.
如果不是,则意味着您绕过gitolite-shell并使用bash代替。 原因可能是,通过运行gl-setup your_pub_key.pub,您将密钥添加到/home/git/.ssh/authorized_keys文件的底部。
因此,永远不会到达此键,因为顶部还有其他键。因此,您只需打开/home/git/.ssh/authorired_keys并将最近添加的gitolite键移动到文件顶部。
将此记录移动到文件顶部后,您应该可以使用: git clone git @ ganesh:testing.git 的人 git clone git @ ganesh:repositories / testing.git 第二个克隆了回购但导致错误,因为你通过bash而不是gitolite-shell运行“git push”