【发布时间】:2014-12-20 12:09:55
【问题描述】:
我的情况是,我有一个从 git 存储库克隆的本地源代码树,我正在尝试将其推送到新的远程位置。
我使用打包方法 (deb) 在服务器上安装了 gitolite。我关注了Wiki instructions,以成功的git clone gitolite@localhost:gitolite-admin 结束。然后我添加了新的存储库和我的公钥。我可以在我的机器(客户端)上克隆这个存储库,但无法推送到它。 SSH troubleshooting document 恰当地描述了my scenario:
考虑 git@server:repositories/reponame.git。克隆操作 可以工作——你使用的是完整的 Unix 路径,(假设默认 $REPO_BASE 设置),因此 shell 会在您所说的位置找到 repo 将会。但是,当您推送时,gitolite 的更新钩子会启动,并且 无法运行,因为它预期的一些环境变量 不存在
所以,我可以用
克隆git clone gitolite@server.com:repositories/reponame.git
但没有
git clone gitolite@server.com:reponame.git(我得到fatal: 'reponame.git' does not appear to be a git repository)
如果我对克隆的(空)存储库进行更改并尝试推送,我会得到 p>
远程:ENV GL_RC 未设置远程:BEGIN 失败--编译在 钩子/更新第 20 行。远程:错误:钩子拒绝更新 裁判/负责人/大师
所以,这似乎与前缀有关 - 但是,正如我所提到的,如果不在路径中包含 repositories/ 说明符,我无法克隆存储库。
这就是“绕过gitolite”的意思吗?我该如何纠正这种情况?最终,我想将整个预先存在的源代码树推送到新的远程服务器(我已将新服务器作为远程服务器添加到 .git/config),并维护历史记录。
【问题讨论】: