为什么我的git无法通过gitolite推送到我的服务器使用git-daemon

时间:2012-09-19 12:22:29

标签: git gitolite git-daemon

当我使用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)

然而,当我使用像ssh这样的git@xxx:xxx.git时,它不仅可以克隆,还可以推送,但我想使用git://来克隆和推送,所以我能做什么为它工作吗?

1 个答案:

答案 0 :(得分:1)

诀窍是,如果你克隆一个由gitolite管理的git repo,那个远程repo将包含一个post-update钩子(reserved by Gitolite),它应该由gitolite调用。

通常情况下,您应该能够使用本机git协议,只要用户'守护程序'(see syntax)声明repo是可读的,并且看到GitoliteV3的“Interfacing with git-daemon”< / p>

repo @all
    R   =   gitweb daemon
  

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

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