[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^^;
コメント
TracLightningで試してみました。
しかしrelated_ticketsに何も入力されていないチケットではエラーが出てしまうようです。
relation = "\n\nrelated " + ticket.values.get('related_tickets')
となっているところをとりあえず
if ticket.values.get('related_tickets')==None:
relation = ""
else:
relation = "\n\nrelated " + ticket.values.get('related_tickets')
と修正することで動作するようになりました。
…こうなると親チケット、子チケットと分けてみたくなりますね。
投稿者: tag | 2008年05月19日 19:32
コメントありがとうございます。
私も同じ問題に出会って修正したような気がします。
今、手元に環境がないのでどんな修正をしたのか正確には分からないんですが。。A^^;
親チケット、子チケット区別したいですね。その辺は 0.11以降のプラグインで考慮されるんですかね。(想像)
投稿者: ばたっち | 2008年05月20日 10:38
MasterTicketsPluginでは[ticket-custom]にblockedbyとblockingを追加して使うようになってました。
trac-0.11rc1-shuwaにいれてみて確認してみたのですが、Genshiをtrunkからとってこないとだめだとか、GraphVizPlugin自体がなぜか動作しない(設定がおかしいだけ?)のでつながりをグラフで見られないとかで、まだ現時点ではいまいちのような感じがしました。
投稿者: tag | 2008年05月23日 00:15
0.11はまったく見たことないんですが、MasterTicketPluginはまだ不完全なんですか。。
グラフ出なくても、シンプルにチケットの親子が辿れればいいんですけどね。A^^;
投稿者: ばたっち | 2008年05月26日 19:35
すみません、言葉足らずでした。
ちょっとやっただけなので目についたことを書きましたが、
親子関係はしっかりしてるのではないかと思います。
子チケットが閉じないと親チケットが閉じれない
ようにもしてあるようです。
投稿者: tag | 2008年05月29日 17:13
親から子への依存も考慮されているのですか。
それはそれで、がちがちな気も。。A^^;
個人的には、双方向のリンクを自動で作ってくれて、片方消したら相手側にも反映してくれるだけで十分かもしれないです。(^^;
投稿者: ばたっち | 2008年05月30日 19:47