[Trac] チケットを階層化したい。
こんにちわ。ばたっちです。
tracのチケット便利なんだけど、階層化できないのが不便。
TracMasterTicketsというプラグインがあるようですが、バージョン0.11以上で対応。
現在、インタアクト社提供の日本語版(0.10.4)を使っているのでダメなようです。。orz
redMineはこの辺の問題を最初から考慮して作られているみたいですね。
とりあえず、カスタムチケットで関連チケットへのリンクを追加して、レポートで関連の閲覧をできるようにしてみました。
まずは、ticket-customに関連チケットのフィールドを追加します。
trac.ini ---- [ticket-custom] related_tickets = text related_tickets.label = 関連チケット
追加したら Apache再起動して設定を反映させます。
チケット編集画面にて「チケット属性を変更する」に「関連チケット」の項目が追加されるので、「#999」のようにチケット番号を記入します。複数ある場合は半角スペースで区切って記入します。
次に新規レポートを作成します。SQLはこんなカンジ。
SELECT t.id AS ticket, t.summary, (CASE t.status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, t.resolution, t.time AS created, t.changetime AS modified, r.value AS description FROM ticket t LEFT OUTER JOIN ticket_custom r ON (t.id = r.ticket AND r.name = 'related_tickets') WHERE t.status IN ('new', 'assigned', 'reopened', 'closed') ORDER BY t.id DESC
ticket_customを JOIN して、値(チケット番号)を「description」に AS して表示しています。
こうしておくと、一覧表示で関連チケットのチケット番号が Wikiフォーマット扱いになって、リンクにしてくれます。
あとは相互リンクにしたり、チケット編集画面で関連チケットへのリンクを表示したりできるといいんだけどなぁ。(^^;
さっそく追記:
編集画面でリンク表示は簡単にできそうなのでいじってみました。
tracのソースにある web_ui.pyというファイルを以下のように変更します。
/path/to/python/lib/python2.?/site-packages/trac/ticket/web_ui.py ---- --- web_ui.py.orig 2007-05-01 18:00:28.000000000 +0900 +++ web_ui.py 2008-02-28 12:57:06.000000000 +0900 @@ -600,9 +600,11 @@ field['skip'] = True req.hdf['ticket.fields.' + name] = field + relation = "\n\nrelated " + ticket.values.get('related_tickets') + req.hdf['ticket.reporter_id'] = reporter_id req.hdf['ticket.description.formatted'] = wiki_to_html( - ticket['description'], self.env, req, db) + ticket['description'] + relation, self.env, req, db) req.hdf['ticket.opened'] = format_datetime(ticket.time_created) req.hdf['ticket.opened_delta'] = pretty_timedelta(ticket.time_created)
Apache再起動すれば、チケット編集画面の「チケットの概要」に「related #999」のようにリンクが出るようになりました。
かなりやっつけ(しかもPython素人)ですが、できたのでまあいいか。A^^;