Dan*_*iro 9 git redmine gitolite
我在与我的gitolite存储库相同的服务器上安装了Redmine.
为了将我的存储库链接到我的Redmine实例,我使用以下命令在本地克隆了repo:
git clone --bare --local /home/git/repositories/my-repo.git
Run Code Online (Sandbox Code Playgroud)
就像我在服务器上成功克隆了repo一样,我可以像预期的那样浏览Redmine上的repo.
问题是,一旦我这样做,我就不能再向本地机器上的远程仓库推送任何东西了.
当我尝试
git push
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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'
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
编辑#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
Run Code Online (Sandbox Code Playgroud)
Dan*_*iro 16
我设法让它将原始回购指向Redmine,因为两者都坐在同一台机器上,遵循一些简单的步骤:
在Redmine上添加一个存储库,其中包含gitolite存储库的原始存储库.路径就像是/home/git/repositories/my-repo.git.
最初,Redmine没有任何读取存储库的权限,所以我们通过运行将Redmine用户(通常www-data或者apache)添加到git组中来解决问题usermod -a -G git www-data(了解服务器的配置,因为这可能有点不同,根据如何配置gitolite.
更改文件的UMASK属性.gitolite.rc,默认值为0077to 0022,相当于755 (rwxr-xr-x)目录和644 (rw-r--r--)文件.
对于现有的回购,您可能需要运行 chmod -R g+rX
如果您仍然遇到Redmine的权限问题,它会404在存储库选项卡上打开而不是repo,您可能必须chmod -R g+rX在整体上运行/home/git/repositories,以确保Redmine用户可以一直读取存储库.