git gitolite 推送错误 -> 远程:未设置 ENV GL_RC
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5233058/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
gitolite push error -> remote: ENV GL_RC not set
提问by amar4kintu
I am trying to push content from a workstation to a server. But it gives me an error. Please look at the following for command and error:
我正在尝试将内容从工作站推送到服务器。但它给了我一个错误。请查看以下命令和错误:
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'
It seems that I need to set the environment variable GL_RC
. Is this so?
看来我需要设置环境变量了GL_RC
。是这样吗?
Can anyone here tell me what the problem might be and how I can solve it? I am using gitolite on Windows Server 2003.
任何人都可以告诉我可能是什么问题以及我如何解决它?我在 Windows Server 2003 上使用 gitolite。
采纳答案by VonC
As illustrated in the doc ssh troubleshooting, this is probably caused by an incorrect path during cloning.
如文档ssh 故障排除中所示,这可能是由于克隆期间路径不正确造成的。
The documentation (some parts below were only valid for Gitolite V2) mentions:
文档(下面的某些部分仅对 Gitolite V2 有效)提到:
The second error
第二个错误
(ie. "you are able to clone repositories but are unable to push changes back (the error complains about the GL_RC
environment variable not being set, and the hooks/update failing in some way)
(即。“您可以克隆存储库但无法推回更改(错误抱怨GL_RC
未设置环境变量,并且挂钩/更新以某种方式失败)
happens if you use
git@server:repositories/reponame.git
(assuming defaultsetting -- in Gitolite V3, it always is$REPO_BASE
~/repositories
) -- that is, you used the full unix path.
Since the "prefixing" mentioned above is not required, the shell finds the repo and clones ok.
But when you push, gitolite's update hook kicks in, and fails to run because some of the environment variables it is expecting are not present.
如果您使用
git@server:repositories/reponame.git
(假设默认设置——在Gitolite V3 中,它总是$REPO_BASE
~/repositories
)——也就是说,你使用了完整的 unix 路径。
由于不需要上面提到的“前缀”,shell 找到 repo 并克隆 ok。
但是当你推送时,gitolite 的更新钩子启动,并且无法运行,因为它期望的一些环境变量不存在。
The message that appears on a successful run of the "easy-install" program clearly includes the following warning:
成功运行“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
So in your case, you must have cloned your repo with:
因此,在您的情况下,您必须使用以下命令克隆您的回购:
git clone git@ganesh:repositories/testing.git
instead of:
代替:
git@ganesh:testing.git
回答by Alcherk
Just got the same error.
刚刚得到同样的错误。
Correct answer is you need to use git clone gitolite:repo_name
command to clone the repository and git push gitolite:repo_name
to push changes, instead of git clone git@yourservername:repo_name
.
正确答案是您需要使用git clone gitolite:repo_name
命令来克隆存储库并git push gitolite:repo_name
推送更改,而不是git clone git@yourservername:repo_name
.
回答by Sitaram Chamarty
The ssh troubleshooting document at http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html(as well as in the gitolite source repo) has been totally re-worked now. I'm hoping that it flows much better and explains things easier, including this specific error.
http://sitaramc.github.com/gitolite/doc/ssh-troubleshooting.html(以及在 gitolite 源代码库中)上的 ssh 故障排除文档现已完全重新设计。我希望它流动得更好并更容易解释事情,包括这个特定的错误。
I'll also add that you should ideally read that document in full, at least the first time.
我还要补充一点,理想情况下,您应该完整阅读该文档,至少是第一次阅读。
Sitaram
西塔拉姆
回答by Kostyantyn
Try to:
尝试:
ssh git@ganesh
You should see gitolite-shell instead of bash:
你应该看到 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.
If not it means you bypass gitolite-shell and use bash instead. The reason might be, that by running gl-setup your_pub_key.pub you added your key to the bottom of /home/git/.ssh/authorized_keys file.
如果不是,则意味着您绕过 gitolite-shell 并改用 bash。原因可能是,通过运行 gl-setup your_pub_key.pub 您将密钥添加到 /home/git/.ssh/authorized_keys 文件的底部。
Therefore, this key is never reached, because there are other keys at the top. So, you simply need to open /home/git/.ssh/authorired_keys and move the recently added gitolite key to the top of the file.
因此,永远不会到达此键,因为顶部还有其他键。因此,您只需打开 /home/git/.ssh/authorired_keys 并将最近添加的 gitolite 密钥移动到文件顶部。
After moving this record to the top of the file, you should be able to use: git clone git@ganesh:testing.git insead of git clone git@ganesh:repositories/testing.git The second one clones the repo but leads to the error, because you run "git push" via bash instead of gitolite-shell
将此记录移动到文件顶部后,您应该可以使用: git clone git@ganesh:testing.git insead of git clone git@ganesh:repositories/testing.git 第二个克隆 repo 但导致错误,因为您通过 bash 而不是 gitolite-shell 运行“git push”