Redmine + Gitolite - 仓库权限问题及更多

9

我在与我的gitolite存储库相同的服务器上安装了Redmine。

为了将我的存储库链接到我的Redmine实例,我使用以下命令本地克隆了存储库:

git clone --bare --local /home/git/repositories/my-repo.git

当我成功地在服务器上克隆仓库并在Redmine中导航时,一切按预期进行。

问题在于,一旦我这样做了,我就不能再将任何东西推送到我的本地机器上的远程仓库。

当我尝试时:

git push

我遇到了以下错误:
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 695 bytes, done.
Total 8 (delta 6), reused 0 (delta 0)
fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stored in     ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt
error: unpack failed: unpack-objects abnormal exit
To git@dev.my-host.org:my-repo.git
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git@my-host.org:my-repo.git'

有什么想法吗?

编辑 # 1

gitolite日志显示如下:

2012-10-22.10:59:59     13121   ssh     ARGV=drgomesp   SOC=git-receive-pack 'my-repo.git'   FROM=187.65.248.7
2012-10-22.11:00:00     13121           access(my-repo, drgomesp, W, 'any'),-> refs/.*
2012-10-22.11:00:00     13121           trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.*
2012-10-22.11:00:00     13121   pre_git my-repo      drgomesp        W       any     -> refs/.*
2012-10-22.11:00:00     13121           system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git'
2012-10-22.11:00:00     13121   END
2个回答

16

我采取了一些简单的步骤将原始仓库指向Redmine,因为它们都在同一台机器上,并使其正常工作:

  1. 在Redmine上添加一个仓库,使用gitolite的原始仓库路径。路径应该类似于/home/git/repositories/my-repo.git

  2. 最初,Redmine没有任何读取仓库的权限,所以我们通过运行usermod -a -G git www-data 将Redmine用户(通常为www-dataapache )添加到git组来解决这个问题(根据您如何配置gitolite,您的服务器配置可能略有不同,请注意)。

  3. 更改.gitolite.rc文件中的UMASK属性,从默认值0077更改为等效值0022,目录设置为755(rwxr-xr-x),文件设置为644(rw-r--r--)

  4. 对于现有的仓库,您可能需要运行chmod -R g+rX

如果您仍然遇到Redmine权限问题,例如打开存储库选项卡时出现404错误,请在/home/git/repositories上运行chmod -R g+rX,以确保Redmine用户可以读取所有的仓库。


1
谢谢提示。setfacl -R -m git:rX ~git/repositories/ 对我很有帮助。 - Pierre de LESPINAY
我收到了 stderr 错误信息:fatal: Not a git repository: '/home/git/repositories/myrepo.git',该错误出现在一个已有提交记录的仓库中。有什么想法这是为什么?正在运行 redmine 3.1,在网页上显示 404。 - Gerard van den Bosch

1

重新打包命令无法解决问题。关于umask,没有任何显示。我不确定这是否是权限问题。有其他替代方案吗? - Daniel Ribeiro
一切似乎都很正常,只要我在存储库上执行chown apache命令,以便Redmine可以读取它。然后,我就无法再从本地推送了。这看起来很奇怪... - Daniel Ribeiro
本地机器上的错误消息是问题末尾的那个。关于一个损坏的对象的问题。我会检查日志,马上回来... - Daniel Ribeiro
我之前在那个主题下没有找到任何回复,即使在你指引我之前也是如此。有没有解决这个问题的指南?这些日志信息实际上是错误吗? - Daniel Ribeiro
我的意思是,这个https://dev59.com/5G855IYBdhLWcg3wlVca并没有帮助我解决问题。我正在查看http://www.kernel.org/pub/software/scm/git/docs/howto/recover-corrupted-blob-object.txt,但我认为它也不会对我有太大的帮助。奇怪的是,在我将其链接到Redmine之后,存储库停止工作。我认为这与此有关... - Daniel Ribeiro
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接