Subversion のコミット時にTracのticketへのリンク を必須に
前々からやろうと思っていたけど、pre-commit には、コミットメッセージが渡ってこないものと思ってあきらめていたが、実はちゃんととる方法があるのがわかったのでやってみた。これで、ticket からchangeset、changesetからticketを互いに参照しやすくなる。
- commit時にチケットを操作する設定
ここから、trac-post-commit-hook のサンプルを取ってきて、
コマンド #チケット番号 例 see #123
みたいなコミットメッセージを書くと、自動でチケットにコミットログがリンクされるように設定する。
具体的には以下のとおり( Subversionのレポジトリのパスは /var/svn/ とする。)
#!/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