3

当我使用 gitolite 时,忽略git-daemon,我可以这样做git clone git://xxx/xxx,但是当我推送项目时,它向我显示错误:

Total 2 (delta 0), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains:  /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
To git://www.54cxy.com/qianfuzi
 ! [remote rejected] master -> master (hook declined)

但是,当我使用sshlike git@xxx:xxx.gitit working时,不仅可以克隆,还可以推送,但是我想使用git://克隆和推送,那么我该怎么做才能让它工作呢?

4

1 回答 1

1

诀窍是,如果您要克隆由 gitolite 管理的 git 存储库,该远程存储库将包含一个post-update钩子(由 Gitolite 保留),它应该由 gitolite 调用。

通常,您应该能够使用本机 git 协议进行推送,前提是用户“守护进程”将 repo 声明为可读(请参阅语法,并参阅GitoliteV3 的“接口”)git-daemon

repo @all
    R   =   gitweb daemon

特殊用户可读的任何 repodaemon都被认为是可读的git-daemon
对于这些存储库中的每一个,git-daemon-export-ok都会在存储库中创建一个名为的空文件(即,其中的repo.git目录$HOME/repositories)。

因此,请检查您的 gitolite.conf 文件是否确实提到了 user daemon,以及该文件$HOME/repositories/git-daemon-export-ok是否存在。

于 2012-09-19T12:41:32.180 回答