Trac 0.12以降でsubversionからチケットを更新する方法

Trac 0.12以降を導入してsubversionのコミットからチケットをcloseできなくなってしまった。Trac 0.11まではsubversionのレポジトリのhookディレクトリにpost-commitを配置して、trac-post-commit-hookを呼び出せばよかったのだが、Trac 0.12からはやり方が変わったようだ。

Trac 0.12以降でsubversion経由でチケットをclose出来るようにするには以下ので順を踏めば良い。以下ではMTracで複数のプロジェクトを動かしている場合を想定している。ディレクトリ名等は適宜読み替えること。

手順

  • subversionのレポジトリのhookディレクトリに以下をpost-commitという名前で実行可能属性をつけて配置。
#!/bin/sh
export TRAC_ADMIN="/opt/local/bin/trac-admin"
export TRAC_ENV_PARENT_DIR="/Volumes/Data/trac"
export PYTHON_EGG_CACHE="${TRAC_ENV_PARENT_DIR}/.egg_cache"
export TRAC_ENV="${TRAC_ENV_PARENT_DIR}/hoge"
${TRAC_ADMIN} ${TRAC_ENV} changeset added "$1" "$2"
  • 同様にpost-revprop-changeを配置
#!/bin/sh
export TRAC_ADMIN="/opt/local/bin/trac-admin"
export TRAC_ENV_PARENT_DIR="/Volumes/Data/trac"
export PYTHON_EGG_CACHE="${TRAC_ENV_PARENT_DIR}/.egg_cache"
export TRAC_ENV="${TRAC_ENV_PARENT_DIR}/hoge"
${TRAC_ADMIN} ${TRAC_ENV} changeset modified "$1" "$2"
  • trac-adminを使用してユーザーに管理画面の使用権限を付加
$ trac-admin hoge permission add fuga TRAC_ADMIN
  • tracのページの右上にある管理->プラグインからCommitTicketUpdaterを有効にする。

以上で0.11以前と同様に"close #123"や"fix #234"と書くだけでチケットがcloseされるようになった。

前の方法とこの方法とどちらがエレガントなのだろう・・・。

リンク