为什么我的git可以';t使用git守护进程通过gitolite推送到我的服务器

为什么我的git可以';t使用git守护进程通过gitolite推送到我的服务器,git,gitolite,git-daemon,Git,Gitolite,Git Daemon,当我使用gitolite时,忽略git守护进程,我可以像git克隆一样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. rem

当我使用gitolite时,忽略
git守护进程
,我可以像
git克隆一样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
like
git@xxx:xxx.git
它不仅可以克隆,还可以推送,但我想使用
git://
来克隆和推送,那么我能做些什么来让它工作呢?

诀窍是,如果你克隆一个由gitolite管理的git repo,那么远程repo将包含一个
更新后的钩子(),这应该被称为gitolite

通常,您应该能够使用本机git协议进行推送,前提是用户“daemon”将repo声明为可读的(参见“”了解GitV3)

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


因此,请检查您的gitolite.conf文件是否提到用户
守护程序,以及文件
$HOME/repositories/git daemon export ok
是否存在。

但我想使用gitolite和git daemon,这样您就可以将gitolite v3集成到git守护程序中,并让git://可以执行推送操作,不仅仅是克隆?@user1683012我已经编辑了我的答案以满足您的特定请求。我在/home/git/repositories/qianfuzi中触摸git守护程序导出ok,在gitolite admin/conf/gitolite.conf中,它是Repo qianfuzi WR+=守护程序,可以克隆git://www.xxx.com/qianfuzi 但不能推动它,现在使用repo@all R=gitweb daemon这样的方法,并将git daemon export ok放入存储库,它无法克隆和推送,当我克隆它时,错误是致命的:远程错误:拒绝访问或存储库未导出:/qianfuzi,那么我能为它做些什么,感谢you@user1683012git守护进程导出ok必须由gitolite本身生成。试着用一个新的gitolite安装和一个测试git repo来测试它,看看这个文件是否正确生成
repo @all
    R   =   gitweb daemon