gitolite push error - > remote:ENV GL_RC未设置

时间:2011-03-08 13:23:17

标签: git git-svn msysgit gitolite

我正在尝试将内容从工作站推送到服务器。但它给了我一个错误。请查看以下命令和错误:

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。

4 个答案:

答案 0 :(得分:9)

如文档ssh troubleshooting所示,这可能是由于克隆过程中路径不正确造成的。

文档(下面的某些部分仅对Gitolite V2有效)提及:

  

第二个错误

(即“你能够克隆存储库但无法推回更改(错误抱怨GL_RC环境变量未设置,并且钩子/更新以某种方式失败)

  如果您使用git@server:repositories/reponame.git(假设默认 $REPO_BASE 设置 - Gitolite V3,它始终为~/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”