Subversion のコミット時にTracのticketへのリンク を必須に

前々からやろうと思っていたけど、pre-commit には、コミットメッセージが渡ってこないものと思ってあきらめていたが、実はちゃんととる方法があるのがわかったのでやってみた。これで、ticket からchangeset、changesetからticketを互いに参照しやすくなる。

  • commit時にチケットを操作する設定

ここから、trac-post-commit-hook のサンプルを取ってきて、

コマンド #チケット番号

例
see #123

みたいなコミットメッセージを書くと、自動でチケットにコミットログがリンクされるように設定する。
具体的には以下のとおり( Subversionレポジトリのパスは /var/svn/ とする。)

  1. trac-post-commit-hook を /var/svn/hooks/ の下におく。
  2. /var/svn/hooks/post-commit を以下のようにする。
#!/bin/sh

REPOS="$1"
REV="$2"

/usr/bin/python /var/svn/hooks/trac-post-commit-hook -p "/var/trac/prj" -r "$REV"

これで、コミット時のメッセージに応じてチケットが更新される。
「close,closed,closes,fix,fixed,fixes」などのキーワードが入ると自動でチケットがクローズされる。
「addresses,re,references,refs,see」などのキーワードが入ると自動でチケットにchangesetのリンクが挿入されるのでとても便利。

  • pre-commit の編集

上の設定だけでもかなり便利になったが、以下の設定をすると、
コミット時のコメントは以下のように書かないと、コミットが失敗する。

   see   #123

チケットにコミットのログを必ず残せるようになるので、後からチケットを参照すると、ソースの変更も同時に確認できるので非常に便利になる。
チームで開発する場合には必須の設定。

/var/svn/hooks/pre-commit を以下のように設定する。実行権限を付けること。

#!/bin/sh

REPOS="$1"
TXN="$2"

SVNLOOK=/usr/bin/svnlook

$SVNLOOK log -t "$TXN" "$REPOS" | grep -i -P 'see\s+#[0-9]+' > /dev/null || exit 1

exit 0

参照URL:
Subversionでコミットメッセージを必須に: 気の向くままに・・・