昨日のmasatoさんのエントリへのコメントで、Tracの話が盛り上がっていたので引き続きTracネタを続けます。今さらTracについての説明は必要ないと思いますが、どんなものかひと言で説明すると、BTSとWikiとSubversionリポジトリビュアーを合体したようなものです。この組み合わせ具合が絶妙で、Tracは様々なソフトウェア開発現場で使われています。有名なところでは、Ruby on Railsの開発にも使われています。
しかし、ウノウではBTSに影舞を使っています。何故かというと、標準ではTracのワークフローは次のようになっていて、testingのステータスがないからです。
最近は、ベータ・クオリティでもいいから、とにかく早くサービスを公開することが重要だという考え方が一般的になってきています。しかし、バグだらけのシステムでは、ユーザはすぐに離れていってしまいます。まともに動かないシステムなんて、ふつう使いたくないですからね。ベータ版といえども、最低限の品質を確保している必要があるわけです。そこでQAのフェーズが重要になってきます。自動でユニットテストを行っていても、思いもよらないバグが出てきたりすることはよくあるわけで、ウノウにおけるテスト番長の存在は大きいです(見た目の存在感もw)。
大切なtestingのステータスがないのが致命的というわけですが、Tracの便利さは一度味わってしまうと、なかなか抜けることができません。で、いろいろ調べていたところ、本家TracのWikiで WorkFlow Discussion というページを発見しました。やっぱり、同じようにTestingのステータスが欲しいと思っている人はいるようで、ブランチとしてTracのWorkflowをカスタマイズできるような仕組みが開発されていました。このブランチ版を使うことで、Workflowを次のようにすることができるそうです。
ほとんど普通のTracと変わらないのですが、インストールと設定方法を説明します。
まず、svnリポジトリからチェックアウトしてインストールします。
$ svn co http://svn.edgewall.com/repos/trac/sandbox/workflow trac $ cd trac $ python setup.py install次にプロジェクト環境を作成します。
$ trac-admin </path/to/projenv> initenv作成したプロジェクト環境のtrac.iniを修正して、verifyのステータスを追加します。
$ vi /path/to/projenv/conf/trac.ini ; Available actions for each ticket status [ticket-status] new = leave resolve reassign accept assigned = leave resolve reassign reopened = leave resolve reassign resolved = leave reassign reopen verify verified = leave reassign reopen retest close closed = leave reopen retest ; Status states for each action [ticket-actions] accept = assigned resolve = resolved reassign = new reopen = reopened retest = resolved verify = verified close = closed
以上で特別な設定は完了です。試しにチケットをfixedにしてみて、closedにならずに下のようにverifyのActionが表示されればOKです。同じようにTracにはtestingのステータスがないからなぁと思っていた方は、試してみてはいかがでしょうか。