この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
commit がないときまで cron で redmine の "Repository.fetch_changesets" を動かし続けるのは無駄だと思って、 incron を使ってコミットがあったときに fetch_changesets するようにしてみた。
流れとしてはまず subversion の post-commit hook の途中に
touch /home/redmine/committed-stamp
のような処理を埋め込み、 committed-stamp の owner を www-data にしておく (post-commit hook の実行権限のユーザで、この場合は mod_dav_svn 経由にしているので www-data になる)。
次に crontab(1) と同様に incrontab(1) で
/home/redmine/committed-stamp IN_CLOSE,IN_NO_LOOP /home/redmine/fetch_changesets.sh
のような内容を登録する。
fetch_changesets.sh は今まで cron で実行していたスクリプトを改造したもので、以下のような内容。 incron は vixie-cron と違って、出力をメールで送信してくれる機能はないようなので、リダイレクトして何か出力されていればメールするようにしてみた。
sleep は上の IN_NO_LOOP とあわせて連続で commit があったときに連続実行される回数を減らすために追加してみた。
$ cat fetch_changesets.sh
#!/bin/sh
cd "$(dirname "$0")"
if [ redmine != `id -un` ]; then
echo $0: must run as redmine 1>&2
exit 1
fi
sleep 10
exec >fetch_changesets.log 1>&2
if [ -d redmine ]; then
cd redmine
/opt/ruby-enterprise/bin/ruby script/runner "Repository.fetch_changesets" -e production
fi
if [ -s ../fetch_changesets.log ]; then
mail -s fetch_changesets redmine < ../fetch_changesets.log
fi