我遇到的情况是我有一个从git存储库克隆的本地源代码树,我正试图将其推送到一个新的远程位置。
我使用package方法(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
)
如果我对克隆(空)存储库进行更改并尝试推送,我会
remote:ENV GL_RC未设置远程:BEGIN失败 - 编译中止 hooks / update line 20. remote:error:hook拒绝更新 参考文献/头/主
所以,这似乎与前缀相关 - 但是,正如我所提到的,我不能在路径中不包含repositories/
说明符的情况下克隆存储库。
这是“绕过gitolite”的意思吗?我该如何纠正这种情况?最后,我想将整个预先存在的源树推送到新的远程(我已将新服务器添加为.git/config
中的远程服务器),并保留历史记录。
答案 0 :(得分:0)
我建议使用客户端方法安装gitolite。对我而言,它解决了这个问题。
答案 1 :(得分:0)
git clone gitolite@server.com:reponame.git(我致命: ' reponame.git'似乎不是一个git存储库)
reponame.git的路径不对。 您应该添加前缀repositories /
git clone gitolite@server.com:repositories/reponame.git
表示reponame.git位于/home/gitolite/repositories/reponame.git。