gitosisを使っていたが、gitosisではブランチごとにパーミッションを設定できない。
gitoliteではブランチごとにパーミッションを設定できるらしいので、インストール、設定してみた。
sitaramc/gitolite - GitHub
インストール
http://sitaramc.github.com/gitolite/install.html の、root methodで行った。
設定
http://sitaramc.github.com/gitolite/admin.html
ユーザ、レポジトリの追加方法、パーミッションの設定など。
感想
gitoliteはよい!
gitosisではできないブランチごとのパーミッション設定が可能だし、設定ファイルもgitosisよりきれいで分かりやすい。(特にレポジトリが多くなった場合。)
また、ドキュメントも充実していて分かりやすいので、インストールや設定が楽だった。
その他
- /etc/ssh/sshd_config にAllowUsersを設定している場合は、gitoliteユーザを追加すること。
- gitoliteで管理しているレポジトリを Redmineのレポジトリブラウザで使用する場合、パーミッションに注意。
gitoliteのデフォルトでは、push時にファイルのパーミッションが600になるので、Redmineの実行ユーザがgitoliteユーザと異なると、redmine fatal: Failed to resolve HEAD as a valid ref.
というエラーになる。
push時に作成されるファイルのパーミッションを変更するには、 gitoliteユーザの.gitolite.rcを以下のように編集する。#$REPO_UMASK = 0077; # gets you 'rwx------' #$REPO_UMASK = 0027; # gets you 'rwxr-x---' $REPO_UMASK = 0022; # gets you 'rwxr-xr-x'
Redmine - redmine read git repo without having to reset - Redmine