Webディレクトリをまるごとgitで管理している場合に、公開もgitで出来るようにするためのメモ。
まず、bareなリモートリポジトリをWebサーバ上に置いてWebDAVかSSHでpushできるようにする。次にリモートリポジトリの hooks/post-receive に以下の記述を追加する。
env GIT_WORK_TREE=/var/www/htdocs git checkout -f
これでpushされたときに hooks/post-receive が実行され、 /var/www/htdocs に master ブランチの最新がチェックアウトされる。
WebDAVではなく、SSHでpushしたい場合は /var/www/htdocs の所有権をSSH実行ユーザにしておく。
リモートリポジトリの名前は release のような名前にしておくと分かりやすいと思う。
$ git push release master