ククログ

株式会社クリアコード > ククログ > コミットログでRetrospectivaと連携

コミットログでRetrospectivaと連携

Rubyで実装されたSubversion1リポジトリブラウザ(兼ITS(Issue Tracking System)/バグ管理システム(Bug Tracking System))としてRetrospectivaがあります。

Retrospectivaにはコミットログを解析してより便利にRetrospectivaを使うための機能がいくつかあります。Retrospectivaを採用しているプロジェクトであれば、コミットログの書き方をRetrospectivaの解釈できる書き方にすることにより、さらにRetrospectivaを便利に使うことができます。

チケットへのリンク

RetrospectivaはチケットベースのITS機能を備えています。コミットログには「XXX番のチケットの問題を修正した」というようなログを書くことも多いでしょう。その時、以下のフォーマットでチケットの番号を書くことにより、そのコミットログをRetrospectiva上で見ると該当するチケットにリンクが張られます。(

[#XXX]

この機能はブラウザ上から変更履歴を見ているときにとても便利です。

チケットの更新

RetrospectivaにはExtensionという拡張機能の仕組みがあります。この仕組みを利用したSCM Ticket Updateという拡張機能を導入することにより、コミットログでチケットの状態を更新することができます。

SCM Ticket Updateの導入方法は以下の通りです。(現時点(2008-05-23)のtrunkを利用している場合)

% RAILS_ENV=production ruby script/rxm checkout http://retrospectiva.googlecode.com/svn/extensions/1-1/scm_ticket_update
% RAILS_ENV=production ruby script/rxm install scm_ticket_update
% # Retrospectivaを再起動

拡張機能をインストールした場合はRetrospectivaを再起動することを忘れないでください。

この拡張機能を入れた後は以下のような書式でコミットログを書くことにより、コミットと一緒にチケットも更新することができます。

チケット#123の状態を修正済みに変更:

クラッシュバグを修正 [#123] (status:fixed)

チケット#29の割り当てユーザをaliceに変更:

[#29] テストを追加 (assigned:alice)

他にも以下のような書式が使えます。

[#N] (NAME1:VALUE1 NAME:VALUE2 ...) ログ

また、もし変更後の値に空白が入っている場合は「"..."」とダブルクォートで囲みます。

[#2929] (status:fixed milestone:"2.9 (バラ)") fix a trivial bug.

この機能を使うと、コミットした後にブラウザからチケットを変更する作業がなくなるのでチケットのクローズし忘れも減るかもしれません。また、コミットメールで(コミットログから)チケットがクローズされたことが分かるのも便利な点です。

まとめ

このようにコミットログの書き方を少しRetrospectivaよりにするだけでもっと便利にRetrospectivaが使えるようになります。

Retrospectivaが要求している書き方を使ってもコミットログが見づらくなるわけではないので、少し意識して使ってみてはいかがでしょうか。

  1. Gitにも微妙に対応している