10

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

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

4 回答 4

9

如 doc ssh Troubleshooting中所示,这可能是由于克隆期间路径不正确造成的。

文档(以下某些部分仅对 Gitolite V2 有效)提到:

第二个错误

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

如果你使用会发生git@server:repositories/reponame.git(假设默认$REPO_BASE设置——在Gitolite V3中,它始终是~/repositories)——也就是说,您使用了完整的 unix 路径
由于不需要上面提到的“前缀”,因此 shell 会找到 repo 并克隆 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
于 2011-03-08T19:09:43.230 回答
2

刚刚得到同样的错误。

正确答案是您需要使用git clone gitolite:repo_name命令来克隆存储库并git push gitolite:repo_name推送更改,而不是git clone git@yourservername:repo_name.

于 2011-04-25T12:25:12.900 回答
2

http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html(以及 gitolite 源代码库中)的 ssh 故障排除文档现在已经完全重新编写。我希望它能更好地流动并且更容易解释事情,包括这个特定的错误。

我还要补充一点,理想情况下,您应该完整阅读该文档,至少是第一次阅读。

西塔拉姆

于 2011-05-14T04:09:39.543 回答
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 insead of git clone git@ganesh:repositories/testing.git 第二个克隆 repo 但导致错误,因为您通过 bash 而不是 gitolite-shell 运行“git push”

于 2013-05-01T10:45:20.897 回答