权限不足推动通过智能HTTP Git共享回购

我正在尝试为我们的团队评估git,其中一个要求是使用HTTPS作为传输方法。 我一直在试图遵循git-http-backend文档以及一些关于使用新的智能HTTP传输设置这个稀less的博客,但我只是没有得到它的工作。 我知道这可能是一些愚蠢的东西,但是我已经把我的大脑放在了一边,无济于事。 不要假设任何真正的知识与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

致命的:未能写入对象

Apacheconfiguration:

 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> 

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

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

但我仍然得到同样的错误。

谢谢,我非常感谢我能得到的任何帮助。

Solutions Collecting From Web of "权限不足推动通过智能HTTP Git共享回购"

尝试运行:

 git repo-config core.sharedRepository true 

这为我解决了类似的问题。 从文档:

core.sharedRepository

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

你可以验证这里给出的步骤(这绝对是一个权限/组问题):

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

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

  1. cd到/ opt / git
  2. sudo chgrp -R apache project.git

我的东西apache通常运行www数据,而不是apache,所以这个组也可能是错的

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