TortoiseSVNとITS・BTSの連携

前から「なんだこりゃ?」とは思っていたのだよ。

TortoiseSVNのプロパティ設定画面なのだが、選択可能なプロパティの中にbugtraq:url他、bugtraq:XXXという名称のものがある。これ、どう見てもバグトラッキングシステムとの連携用だよねぇ?

気になったのでちょっと調べてみたのだが・・・あったよ。
http://www.caldron.jp/~nabetaro/svn/TortoiseSVN_ja/tsvn-dug-bugtracker.html

へぇ!そんなことができるのか!Mantisもいることだし、ちょっくら試してみよう。

チェックアウトしてくるモジュールのルートディレクトリ(大抵、repourl/trunk/だろう)に、次のプロパティを設定する。

プロパティ名
bugtraq:url http://server/mantis/view.cgi?id=%BUGID%
bugtraq:message issue #%BUGID%
bugtraq:append false
bugtraq:warninnoissue true
bugtraq:number true

%BUGID%は、入力されたissue IDに置き換えられる。svn:ignoreなんかは設定したディレクトリでしか有効にならないが、こいつらはルートディレクトリに設定しておけばその下すべてに対して有効化するらしい。

では、一度コミットしてプロパティの適用をリポジトリに反映。あたらめて、適当なファイルをコミットしてみる。

右上にテキストフィールドが増えている!ここに、BTS(今回はMantis)に登録済みのissueのIDを書くらしい。どれどれ・・・。

さて、ログ見てみようか。

おお、入ってるね、issue ID。bugtraq:messageで設定した書式でコミットログに追加される。コミットログの前に挿入するか、後から付け足すかはbugtraq:appendで調整。

しかも、issue IDがリンクになっている!これをクリックすると、Webブラウザが起動してbugtraq:urlで設定したBTSにアクセス、issueを表示する。見られちゃ困る情報が満載でここにスナップショットを置けないのが残念。

ちなみに、bugtraq:numberをtrueにしておくと、数値以外が渡された場合にエラーになる。

また、bugtraq:warninnoissueをtrueにしておくと、issue IDが入力されなかった場合に警告してくる。

んー、賢い!

個人的に英語のままのほうが使いやすいのでローカライズせずにつかっているのだが、たぶんLanguagePack当てればこのへんのメッセージも日本語化すると思われる。

ところで、ここには最後に気になる一文がある。

この課題トラッカ統合は、TortoiseSVN に限定されていません。ですから、いずれの Subversion クライアントで使用できます。

・・・TortoiseSVN以外でもOK?そういえば、EclipseSubversionプラグインであるSubclipseも、同じところで開発してたな・・・。

!!
Issue Numberが追加されている!

!!!
ちゃんとリンクになってる!当然、クリックすればBTSにアクセス。

なかなかご機嫌の機能である。これの何がいいかって、つまらないtypoを弾ける点、そしてリポジトリに設定しておけば勝手に開発者全員に適用される点だ。いちいちを設定ファイル蒔かなくていい。今回だって、TortoiseSVNにもEclipseにもなんの設定も行っていない。

より詳細な内容については、上記したマニュアル参照のこと。例えば、bugtraq:logregexでより詳細なログメッセージ設定ができるらしい。複数のissue IDの入力を受け付けるときなんかに入り用になるか?

Mantisの場合、Mantis自体にもSCMとの連係機能があって、SVNリポジトリへのコミットログを拾ってissueのコメントに書き出すことができる。かくして、SCMとBTSの強固な連携がここに実現したわけである。