gitの中央repos運用時のパーミッションの調整
gitで、bareな中央reposにpushしたい。
使うプロトコルは:
- http:// は遅いのでいや
- git:// はgit-daemon的に認証がちょっとやわそうなのでいまいち
- いい方法があったら教えてください><
- pushする人らはsshアカウントがあるので、git+ssh:// でいいや
複数ユーザがpushするので、パーミッションに気を使わなければならない:
- 共通のグループ(例:sandbox)に属させて、chown -R root:sandbox sandbox.git; chmod -R g+w sandbox; find sandbox -type d|xargs chmod 2775 すればグループの統一はOK
- 問題は sandbox.git/objects/ 下とかに新規で作られるディレクトリのパーミッション。
- ~/.bashrcでumask 002すればいいんだけど、皆がしてくれるとは限らない。
と思って、git-init を見たらこんなのが
- shared[={false|true|umask|group|all|world|everybody|0xxx}]
...
git-init(1)
group (or true): Make the repository group-writable, (and g+sx, since the git group may be not the primary group of all users).
git-initの--shareは、core.sharedRepository だそうなので、bare reposなsandbox.git/configの[core]セクションにsharedRepository = groupを追加したら、(ユーザのumaskの設定に依らずに)ちゃんと 2775 なディレクトリが作られるようになりましたとさ。Enjoy!