2011-08-12 77 views
4

我正在尝试为我们的团队评估git,其中一个要求是使用HTTPS作为传输方法。我一直试图遵循git-http-backend文档以及一些关于使用新的智能HTTP传输进行设置的稀少博客,但我只是没有得到它的工作。我知道这可能是愚蠢的,但我已经绞尽脑汁,无济于事。不要假设你有任何真正的知识,我对这个工具很陌生。权限不足通过智能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的错误日志中说:

error: insufficient permission for adding an object to repository database ./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> 


显然,我的第一个念头是文件权限,所以我做了一个快速乔敦 - R的阿帕奇中:/ opt/git的

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

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

谢谢,我非常感谢任何帮助,我可以得到这一点。

+0

这最终成为了SELinux阻止来自Apache的写入目录。 – bfos

回答

1

尝试运行:

git repo-config core.sharedRepository true 

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

core.sharedRepository

If true, the repository is made shareable between several users in a group (making sure all the files and objects are group-writable).

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

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

+0

谢谢,但不幸的是,这似乎并没有解决这个错误。 #混帐回购配置core.sharedRepository真正 #猫配置 [核心] \t repositoryformatversion = 0 \t FILEMODE =真 \t裸=真 \t sharedRepository =真 – bfos

+0

@bfos - 更新我的答案。 – manojlds

+0

我在这里假设,这是发生在服务器下的Apache进程用户(阿帕奇)。 $ groups apache =“apache:apache”。在apache中将所有(3)命令都作为组发出 - 同样的错误。我竟然给每个人的权限,以整个回购和仍然相同的错误! – bfos

1

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

  1. CD到/ opt /的git
  2. 须藤chgrp命令 - R的阿帕奇project.git

我的事情阿帕奇通常运行作为WWW的数据,而不是Apache,因此该组可能是错的也

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

+0

我一直认为它一定是沿着这些线的东西,但它似乎并不想工作。我使用的这个发行版(CentOS)以“apache”运行。从文章中的'ls'你可以看到用户和组都是“apache”,但为了安全起见,我做了一个明确的递归chgrp,但仍然是相同的错误。除此之外,使用gitosis/gitolite进行设置将是下一步,希望能够融入我们的Atlassian Crowd SSO目录。 – bfos