Trac
从0.11版本后可以让用户自定义Ticket的字段,我认为这是Trac向前又迈出了一大步,让我们更加灵活的使用Trac来进行bug管理和跟
踪,0.11版本自定义字段支持以下几种类型: text, checkbox, select, radio, textarea.
1、如何为Ticket增加自定义字段其实很简单,只需要修改一下trac.ini文件即可:
[ticket-custom]
test_two = text
test_two.label = Just a text box
test_two.value = Default [mailto:joe@nospam.com owner] // 为text设定默认值
test_two.format = wiki // 指定text的格式,有两种选择plain, wiki.
test_three = checkbox
test_three.label = Some checkbox
test_three.value = 1
test_four = select
test_four.label = My selectbox
test_four.options = one|two|third option|four // 为下拉框设定默认值,用"|"作分割线。
test_four.value = two
test_five = radio
test_five.label = Radio buttons are fun
test_five.options = uno|dos|tres|cuatro|cinco
test_five.value = dos // 为radio按钮选择默认值
test_six = textarea // textarea类型也可以指定其format(plain, wiki)
test_six.label = This is a large textarea
test_six.value = Default text
test_six.cols = 60
test_six.rows = 30
2、如何在报表中使用新增加的自定字段:在trac.ini文件中增加了这些选项之后仅仅是让用户在使用Ticket的时候可以填写这些字段,但是
如果要将这些自定义的字段在trac的报表中显示还需要注意一点:自定义的Ticket字段是在ticket_custom表中,而不是在ticket表
中,这两个表用来做连接的字段是ticket_custom.ticket =
ticket.id。ticket_custom表的3个字段为:ticket, name, value。
除此之外还有一点需要强调一下的,例如:目前已经在ticket_custom增加了自定义字段'progress',那我们通常会使用如下SQL来显示带progress的ticket报表:
SELECT idASticket,summary,owner,c.valueASprogress
FROMticket t, ticket_customc
WHEREstatusIN('assigned')ANDt.id=c.ticketANDc.name='progress'
如
果该自定义字段是在Trac已经被使用了一段时间之后才定义的,那么以上的SQL生成的report并未包含所有的ticket,
仅仅会包含所有在自定义字段progress增加后创建的ticket,那么会有人建议使用left outer
join就可以解决该问题,是的,如果使用left outer
join当然可以解决该问题。不过Trac是一个可以供用户自己写SQL创建report的工具,有相当大的自由性。所以我建议在每次增加自定义字段的时
候都主动往ticket_custom表中为所有ticket创建一条为None(或者default值)的记录,从根本上避免以上问题。
INSERTINTOticket_custom
(ticket,name,value) SELECT idASticket, 'request_source'ASname, 'None'ASvalue
FROMticket
WHEREidNOTIN( SELECTticketFROMticket_customWHEREname='request_source' );
参考URL:
http://trac.edgewall.org/wiki/TracTicketsCustomFields
http://trac.edgewall.org/wiki/TracTickets