私は、今のところBTS(Bug Tracking System)にはMantisを、バージョン管理にはSubVersionを使っているのですが、両方触るのが面倒だったりします。
良く調べると、MantisにはCVSとの連携機能があったので、これを手直しして、SubVersionと連携できるようにしてみました。
以下の環境で動作を確認しています。
SubVersion 1.2.0 TortoiseSVN 1.2.0 Mantis 0.19.2 WebSVN 1.61
関係するファイル一式は、ここに入れています。展開して、各ファイルをそれぞれ該当するフォルダに置いてください。
違うバージョンをお使いの方は、元のファイルを上書きするものに関しては、お使いのバージョンのファイルに、修正部分をつぎはぎしてください。
SubVersion版のチェックインスクリプト(checkin_svn.php)を、Mantisのcheckin.phpファイルと同じフォルダに置きます。
string_api.phpは、アイテムのビュアーで、SubVersionのリポジトリビュアーへのリンクを張れるように修正してます。具体的には、CVSに対して、このような処理を行っているstring_process_cvs_link関数と同等の、string_process_svn_link関数を追加してます。
Mantis側で、入力内容に「SVN:
例えばWebSVNの場合であれば、「http://<server.domain>/<WebSVN-Path>/listing.php?repname=<RepositoryName>&path=%2F&rev=\\1&sc=1」とすれば、Mantisの項目内のリンクをクリックすると、WebSVN経由でリビジョンを参照できます。
なお、チェックインした際のコメント内にMantisのアイテム番号があれば、Mantisにコメントを追加する際に、「SVN:
これで、Mantis側は、SubVersionとの連携の準備ができました。
次に、SubVersionのリポジトリにフックスクリプトを設定します。
連携するリポジトリのhooksフォルダ内に、リポジトリのあるOSがUnix/Linux(MacOS-Xも?)ならpost-commit.shを、Windowsならpost-commit.batをコピーしてください。
(ただし、post-commit.shは動作確認できていません。不具合があれば、ご指摘いただけると助かります。)
TortoiseSVNをお使いの方は、チェックイン時に、自動的にMantis側のステータスを遷移させる対象のフォルダ(タグ・ブランチ)に、例えば下記のようにプロパティを設定しておくことで、TortoiseSVNが関係するキーワードを自動的に挿入してくれます。
bugtraq:label →管理番号: bugtraq:url →http://<server>/<path>/view.php?id=%BUGID% <server>と<path>の部分は、連携先のMantisにアクセスするURLに差し替えてください。 bugtraq:message → Issue: %BUGID%