と言うわけで、xinu.jp を git 管理として、どこかの clone で書き込み git push でweb に反映するように設定。
○ git user で clone 作成
webサーバで、公開 DocRoot を clone で作成
- gitolite 管理実行ユーザ: git
sudo su git
cd /WEBSITE/MYSITE/
git clone /some/where/gitolite/repositories/MYWEBSITE.git ./DocRoot
○ post-receive hook
webサーバ( = gitolite サーバ)で git push 受信時に、DocRoot(clone) で git pull を自動実行させる。
/some/where/gitolite/repositories/MYWEBSITE.git/hooks 内に次を設置。
- post-receive
#!/bin/sh
cd /WEBSITE/MYSITE/DocRoot/
git --git-dir=.git pull
参考: http://qiita.com/fnobi/items/98bd5d1c83c010842733
○ トラブル
自動化はできたが、自動 git pull したファイルのパーミッションが 0600 となってしまう問題発生。
(0600 だと apache owner が読めない。)
ここ によると gitolite では umask 0077 が設定されるらしいので、post-update に umask 0022 設定した。
しかし、状況は変わらずに 0600 のまま。
で、.gitolite.rc に 0077 が設定してあったので、そこを修正。
diff -U 3 .gitolite.rc.org .gitolite.rc
--- .gitolite.rc.org 2014-01-11 19:04:50.000000000 +0900
+++ .gitolite.rc 2015-02-07 17:44:29.000000000 +0900
@@ -29,7 +29,7 @@
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
# $WEB_INTERFACE = "gitweb";
# $GITWEB_URI_ESCAPE = 0;
-$REPO_UMASK = 0077;
+$REPO_UMASK = 0022;
# ------------------------------------------------------------------------------
# variables with an efficiency/performance impact
で問題解決したので、この blog を作成している次第。