当我使用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://
来克隆和推送,所以我能做什么为它工作吗?
答案 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
是否存在。