【发布时间】:2012-12-31 18:06:35
【问题描述】:
我用 Apache 和一个检索我的组的脚本很好地设置了 gitolite。 我可以有效地控制谁可以推送到存储库,但不能控制谁可以阅读。目前,如果我没有在存储库上设置 R = @all 规则,没有人可以读取它,即使是被其他规则匹配的人。
我有以下 gitolite 配置:
repo testing
R = @git-reader-test
R = olivier
# R = @all #Will work if I uncomment this line
RW+ = @developers
我调用 gitolite 的 wapper 脚本有以下代码
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 规则,我将能够毫无问题地获取我的 repo。
我在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
你知道为什么会这样吗?
【问题讨论】:
-
可能是缺少
project.list的问题? (如serverfault.com/questions/419102/…)