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
ルールのコメントを外せば問題なくリポジトリを取得できます。
私が得るエラー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
なぜこれが起こるのか分かりますか?