我正在尝试为我们的团队评估 git,要求之一是使用 HTTPS 作为传输方法。我一直在努力遵循git-http-后端 http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html文档以及一些关于使用新的智能 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
致命:写入对象失败
阿帕奇配置:
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
但我仍然遇到同样的错误。
谢谢,我非常感谢我能得到的任何帮助。