git pushでWebサーバに公開

Webディレクトリをまるごとgitで管理している場合に、公開もgitで出来るようにするためのメモ。

まず、bareなリモートリポジトリをWebサーバ上に置いてWebDAVSSHで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