MantisとCVSの連携

今をときめく?BTSである、Mantis Bug Trackerを現在の職場に導入。多少難儀したが、なんとか動くようにはなり、今はマニュアルをつらつらと眺めながら細かいカスタマイズをしている。そんな中、マニュアルに気になる項目発見。

CVS Integration」

CVS統合とな?読んでみると、CVSのコミットログに、Mantis上のレポートのIDをしかるべき書式で書き込んでやると、そのコミットログがMantisのレポートにも書き込まれるらしい。なるほど、バグを直したときに、コミットログに「こういうバグを直した」と書くのは当然だが、同時にBTS側にも「このバグ直すのに、これとこれとこれを更新した」というコメントを書き込んでいるのを幾度か見かけた。これが1操作で同時に片付くとなると、なかなかに魅力的な機能である。

実装も簡単。MantisにCVSコミットログ書き込み用アカウントを一つ作り(開発者にしておくといいらしい)、そのアカウント名を設定ファイルに書き込み、CVSROOT/commitinfoに次の一行を書き加える。それだけでよいらしい。

ALL /usr/bin/php /path_to_mantis/core/checkin.php

checkin.phpというスクリプトが、標準入力からコミットログを受け取り、中にIDが書いてあるか調べ、あったらMantisにも反映させるという仕組み。なるほど。

早速やってみた。コミットログのどこかに、例えば「issue #0000001」と書いてあれば、Mantisの0000001番のレポートにコメントが書き込まれるはず。

ところが、これが全然ダメ。コミット時に「どのIDも参照してない」といったメッセージが出る。いや、書いてるって・・・ん?commitinfoって、確かコミットしたファイルのリストが渡されるってやつじゃないか。ログなんてわたらねーよ!嘘つき!

コミットログが渡るのは、ほら、あれだ、CVSROOT/loginfo。こいつに同じ一行を書き加えてみる・・・おお、やっぱりだ。うまくいった。更新ファイル一覧と、コミットログがMantisに書き込まれている!不要な情報も書き込まれてしまっているが、許容範囲だ。便利じゃん!

これ、どうやらSubversionでも同じことをやれるようだ。なかなかやるじゃん、Mantis。

そんなメモ書き。