SubVersionとMantisの連携


私は、今のところ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:」を含めると、CVSの場合と同様、config_inc.phpの「$g_cvs_web」で定義されているURLを表示します。

例えば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%

ホームページに戻る