通过Smart HTTP向Git共享Repo推送权限不足



我正在为我们的团队评估git,其中一个要求是使用HTTPS作为传输方法。我一直在尝试遵循git-http-backend文档以及一些关于使用新的Smart HTTP传输设置此设置的稀疏博客,但我只是没有让它工作。我知道这可能是一些愚蠢的事情,但我绞尽脑汁也无济于事。不要以为我对git有什么真正的了解,我对这个工具还是个新手。


现在我可以通过HTTP进行克隆,但是当我尝试推送时,客户机得到:

$ git push
Username:
Password:
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: unpack-objects abnormal exit


服务器Apache错误日志显示:

错误:向存储库数据库添加对象的权限不足。/objects

fatal: failed to write object


Apache配置:

SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
<Location /git>
        AuthType Basic
        AuthName "Private Git Access"
        Require valid-user
        AuthUserFile /opt/git/passwords
</Location>


显然我的第一个想法是文件权限,所以我做了一个快速的chown -R apache:/opt/git

# ls -l /opt/git
drwxr-xr-x. 7 apache apache 4096 Aug 12 11:06 project.git

但是我仍然得到相同的错误。

谢谢,我非常感谢你对我的帮助。

试着运行:

git repo-config core.sharedRepository true

这已经为我解决了类似的问题。来自文档:

核心。sharedRepository

如果为true,则将存储库设置为可在a中的多个用户之间共享组(确保所有文件和对象都是组可写的)。

你能验证这里给出的步骤吗(这绝对是权限/组问题):

http://parizek.com/?p=177

解决方案可能在服务器上存储库的组权限中。

    cd到/opt/git

我想apache通常以www-data运行,而不是apache,所以组可能也错了

我使用gitosis并通过服务器帐户而不是Apache来管理帐户,但是用这种解决方案解决了我同样的问题

相关内容

  • 没有找到相关文章

最新更新