我正在尝试让 Gitosis 在我的 Ubuntu 服务器上运行(从 Win7 客户端)。它已安装,我可以通过 SSH 连接到它,但是,如果我尝试推送新项目,则会出现以下错误:
错误:gitosis.serve.main:存储库读取访问被拒绝
我从那时起尝试清除我的 /home/git/ 文件夹并重新开始 - 但现在即使我尝试获取 gitosis-admin 项目时仍然会出现同样的错误。
知道是什么原因造成的吗?
[编辑] 将调试标志添加到配置文件后,我得到以下结果:
C:\sandbox>git push origin master
DEBUG:gitosis.serve.main:Got command "git-receive-pack '/home/git/repositories/sandbox'"
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'writable' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'writeable' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'Dan@DAN-PC' as 'readonly' on 'home/git/repositories/sandbox'...
DEBUG:gitosis.group.getMembership:found 'Dan@DAN-PC' in 'gitosis-admin'
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly
[编辑2]
为了添加额外的信息 - 我刚刚尝试了 Gitolite 并得到了类似的错误:
Cloning into gitolite-admin...
R access for home/git/repositories/gitolite-admin DENIED to dan
(Or there may be no repository at the given path. Did you spell it correctly?)
fatal: The remote end hung up unexpectedly
这是使用相同的“git”用户和密钥。我尝试更改目录权限,但没有帮助。
答案1
知道是什么原因造成的吗?
这通常表示 (a) 你的配置有误gitosis.conf
,或 (b) 你的 Gitosis 中缺少公钥keydir
。要进一步诊断问题:
查看管理存储库。由于您可以登录服务器,因此您可以运行:
git checkout /path/to/gitosis/repos/gitosis-admin.git
这将为你提供一个名为 的目录
gitosis-admin
。此目录中是你的gitosis.conf
文件。将以下内容添加到文件顶部:
[gitosis] loglevel = DEBUG
提交您的更改并推回到原始存储库:
git commit -m 'enabled debug logging' -a git push origin master
现在,当您推送到 gitosis 安装时,您将获得详细的调试日志,这应该有助于诊断问题。如果这不能指出问题所在,请在此处发布调试输出,我们将帮助您解决问题。
答案2
我强烈建议你放弃 gitosis 并切换到吉托莱特。Gitosis 已被弃用,似乎不再维护,而 gitolite 则得到非常积极的维护和支持。Gitolite 可以完成 gitosis 能做的一切,但做得更好,包括详细的错误,而不是 gitosis 中出现的模糊错误。
答案3
原来是因为我使用了与我的主要 SSH shell 登录相同的用户名 (dan)。所以我将我的 git admin 更改为使用相同的 SSH 密钥对,现在它似乎工作正常。现在也使用 Arrowmaster 推荐的 Gitolite。