ひとつのsvnレポジトリで複数のTracプロジェクトのときのpost-commitの例
なときに、svnのディレクトリに応じてtrac-post-commit-hookの実行対象となるTracプロジェクトを切り替えるpost-commitの例。
Tracプロジェクトごとにsvnレポジトリをわければいいんだけど、のっぴきならない理由でそれができないときに。
#!/bin/sh REPOS="$1" REV="$2" # exec >/tmp/post-commit.log 2>&1 trac_post_commit() { PROJECT=$1 LOG=`/usr/bin/svnlook log -r $REV $REPOS` AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS` TRAC_ENV="/home/trac/${PROJECT}" TRAC_URL="http://example.org/trac/${PROJECT}/" env LANG=ja_JP.UTF-8 \ /usr/bin/python /home/svn/hooks/trac-post-commit-hook \ -p "$TRAC_ENV" \ -r "$REV" \ -u "$AUTHOR" \ -m "$LOG" \ -s "$TRAC_URL" \ ; } DIRS=$(/usr/bin/svnlook dirs-changed -r $REV $REPOS) for dir in $DIRS; do PROJECT= case $dir in FOO/) PROJECT=FOO ;; test/) PROJECT=sandbox ;; boozy/) PROJECT=boozy ;; *) ;; esac if [ -n "$PROJECT" ]; then trac_post_commit $PROJECT else : fi done