static なサイトを作るにあたっては、「コミット + scp などでファイルを一気に転送」を繰り返すことがよくある方法だと思う。 github pages のように、 git push のみでできると楽なのでこの環境を構築してみた。
さくらレンタルサーバー以外でも使える方法なのでそこそこ応用が効きそう。
サーバに git 環境を構築する
% cd $HOME % mkdir tmp; cd tmp; % wget http://kernel.org/pub/software/scm/git/git-1.7.6.tar.gz % tar xvf git-1.7.6.tar.gz % cd git-1.7.6 % ./configure --prefix=$HOME/local % gmake % gmake install % vi $HOME/.profile
PATH に $HOME/local/bin を追加し、$HOME/.profile を読みなおす
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$HOME/bin:$HOME/local/bin; export PATH
bare repository を準備する
% cd $HOME % mkdir -p repos/www % cd repos/www % git init --bare
hooks/post-receive を編集する
push された後にフックすることで、pushと同時に公開ディレクトリにファイルを展開する事ができる。
% cd $HOME/repos/www % cp hooks/post-receive.sample hooks/post-receive % vi hooks/post-receive
以下のように編集する。さくらの場合は $HOME/www が公開ディレクトリ。
#!/bin/sh env GIT_WORK_TREE=$HOME/www git checkout -f
ローカルに戻って編集作業
$ git clone user@user.sakura.ne.jp:/home/user/repos/www $ cd www $ touch index.html $ git add . $ git commit -m 'initial commit' $ git push origin master
これで push された内容が反映されている。次回の push からは `git push` のみで反映させることができる。
簡単!