9

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

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

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

正如我在服务器上成功克隆了 repo 一样,我可以按预期浏览 Redmine 上的 repo。

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

当我尝试

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
4

2 回答 2

16

通过遵循一些简单的步骤,我设法让它将原始存储库指向 Redmine,因为它们都位于同一台机器上:

  1. 使用 gitolite 存储库的原始存储库在 Redmine 上添加存储库。路径将类似于/home/git/repositories/my-repo.git.

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

  3. UMASK将文件的属性.gitolite.rc从默认值更改00770022,相当于755 (rwxr-xr-x)目录和644 (rw-r--r--)文件。

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

如果您仍然遇到 Redmine 的权限问题,它404会在存储库选项卡上打开 a 而不是 repo,您​​可能必须运行 a chmod -R g+rXon whole /home/git/repositories,以确保 Redmine 用户可以一直阅读 repos。

于 2012-10-26T12:18:07.990 回答
1

如果 agit repack remote/origin/master不能解决问题,请检查您的 umask ( umask 0002) 以避免任何写入权限问题,如“ git: can't push (unpacker error) ”中所述。

除此之外,“ Unpacker error Git-push from bare repo to staging server ”总结了所有其他要检查的点。

于 2012-10-21T17:45:27.897 回答