前回、チケットに関するコメントを必須にする - タイトルは未定にて、SVNでコミットする際にチケット番号を必須にする方法を試してみましたが、「注意してくれるけど、無くてもOK」なようにできないものかと考えていました。
そして見つけたのが、ソフト/Bug Tracking/trac/TortoiseSVNやSubclipseとチケットを連動 - discypusのやり方。
書かれているとおりにTortoiseSVNで設定を行うと、確かにチケットIDを入れないと注意してくれるのですが、Tracのチケットを同時に更新してくれません。
むむぅと思ってると、「bugtraq:logregex を使う場合」のやり方を見て以下の方法を試してみました。
TortoiseSVNでの設定
bugtraq:logregex に trac-pre-commit-hook でチェックしてることと同じ正規表現を登録してみます。
2行目の(\d+)は、1行目の正規表現にマッチした文字列から、チケット番号を見つけるためのものらしいです。
試してみる
動作確認も兼ねて、試しにコミットしてみます。
ログにチケット番号を入れないと、以下の様な警告メッセージが表示されますので、入力ミスには気がつくわけですね。
もちろん、ここで「はい」を押せば、チケット番号を入力してなくてもコミットが出来ます。
チケット番号を入れてみます。
bugtraq:logregex の1行目に入力した正規表現にマッチすると文字がハイライトされます。(おお
チケット番号には自動的にリンクが張られて、クリックすればブラウザで「bugtraq:url」に指定したURLが開きます。
bugtraq:logregex の2行目に指定した値が %BUGID% で置き換わるような感じですね。
http://studio15/trac/PersonalProject/ticket/%BUGID% と指定したので、上記画面の場合はhttp://studio15/trac/PersonalProject/ticket/19 が開くわけです。(おお、便利)
これで、チケット番号は基本的に入力させる(チェックして警告する)が、入力しなくてもコミットできる環境ができあがりました。
もちろん、前回設定した「pre-commit.bat」は削除もしくはリネームしておかないと、サーバ側でエラーになりますのでご注意下さい。
追記
後から考えると、これってTortoiseSVNを使ってる時にしか有効じゃない?
AnkhSVNやsvnコマンドを使ってる場合も考えると、やっぱり厳しくtrac-pre-commit-hookで対処すべきか…
今度もう少し考えてみよう。