删除R @all规则后,在gitolite中找不到testing / info / refs

时间:2012-10-11 13:56:48

标签: git gitolite

我使用Apache和检索我的组的脚本设置了gitolite。 我可以有效地控制谁可以进入存储库,但不能谁可以阅读。目前,如果我没有在存储库中设置R = @all规则,则没有人可以读取它,即使是与其他规则匹配的人。

我有以下gitolite配置:

repo testing
    R       = @git-reader-test
    R       = olivier
#    R      =   @all #Will work if I uncomment this line
    RW+     =   @developers

我的wapper脚本调用gitolite有以下代码

echo "Entering gitolite wrapper" >> /home/dev_tools/git/gitauth.log
echo "user: $REMOTE_USER" >> /home/dev_tools/git/gitauth.log
echo "groups: $HTTP_REMOTE_USER_GROUPS" >> /home/dev_tools/git/gitauth.log
exec /home/dev_tools/git/bin/gitolite-shell $REMOTE_USER 2>&1 |tee -a /home/dev_tools/git/gitauth.log

哪个输出:

Entering gitolite wrapper
user: olivier
groups: developers ...
Status: 404 Not Found
Expires: Fri, 01 Jan 1980 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, max-age=0, must-revalidate

Repository not exported: '/home/dev_tools/git/repositories/testing'

所以我的群组甚至我的用户名都与R规则匹配,但我因404错误而被拒绝,但如果我取消注释R = @all规则,我将能够毫无问题地获取我的回购。

我在git fetch上遇到的错误是

fatal: http://olivier@myserver/testing/info/refs not found: did you run git update-server-info on the server?

相应的gitolite日志是:

2012-10-11.15:52:10 26728       access(testing, olivier, R, 'any'),-> refs/.*
2012-10-11.15:52:10 26728       trigger,Writable,access_1,ACCESS_1,testing,olivier,R,any,refs/.*
2012-10-11.15:52:10 26728   pre_git testing olivier R   any -> refs/.*
2012-10-11.15:52:10 26728       system,git,http-backend
2012-10-11.15:52:10 26728   END

你知道为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

奇怪的是,帮助你的不是“R = gitweb”,而是“R =守护进程”。是的,即使你正在使用apache,这似乎......“webbie”。

尝试'man git-http-backend'并寻找'git-daemon-export-ok'。

gitolite文档不你需要这样做,但建议的配置包括

SetEnv GIT_HTTP_EXPORT_ALL

,再次根据'man git-http-backend',是在每个仓库中要求export-ok文件的替代方案。据推测,无论出于何种原因,你都没有选择设置它。

这些都与gitolite没有任何关系,真的。如果没有gitolite你仍然会遇到同样的问题 - 某人必须创建那些export-ok文件(或者你必须设置GIT_HTTP_EXPORT_ALL env var)

sitaram

答案 1 :(得分:2)

正如VonC指出的那样,至少gitweb需要能够读取存储库。所以我可以通过添加:

来解决这个问题
repo @all
    R       =   gitweb daemon

到我的存储库配置,给定(没有任何详细信息)in gitolite documentation

直到现在我才真正想到,gitweb与gitolite真的是分开的,它只是用来拥有一个用于回购浏览的网页界面,但我一定错过了一些gitolite文档。

恕我直言,自从我在询问之前多次阅读以来没有很好地强调链接文档,并且没有任何地方说没有gitweb作为读者会阻止每个人阅读回购

编辑:请参阅Sitaram的解释。