Friday, January 20, 2006

Trac กับ Ticket custom field

วันนี้คุยกับคุณยุทธเรื่อง Trac กัน
คุณยุทธ show url http://projects.edgewall.com/trac/wiki/TimeTracking ให้ผมดู
ซึ่งข้างในมีประเด็นเรื่อง การเพิ่ม field ที่เกี่ยวกับ time tracking ลงไปใน Trac
ซึ่งประเด็นนี้ ผมก็เคยเห็นผ่านตาใน Trac Gantt Pluginเหมือนกัน
แต่ไม่เคยดูละเอียด ก็เลยไปนั่งอ่านอย่างละเอียดดู

สุดท้ายก็อ่านเจอว่า
Trac เตรียม feature Ticket custom-field มาให้เราเรียบร้อยแล้ว
รายละเอียดอยู่ในเอกสาร Custom Ticket Fields

การเก็บข้อมูล จะเก็บลง table ที่ชื่อ ticket_custom
โดย table ticket_custom ที่ trac เตรียมไว้ หน้าตาเป็นแบบนี้

CREATE TABLE ticket_custom (
ticket integer,
name text,
value text,
UNIQUE (ticket,name)
);

การเก็บอย่างนี้มีข้อดีคือยืดหยุ่น แต่ข้อเสีย ก็คือ ถ้าอยากนำไปออก report
ก็ต้อง join 1 ครั้งต่อ 1 field ที่เพิ่มเข้าไป

เมื่อ add field ได้ ก็ต้องเอามาออก report ได้
Module Report ของ Trac มีให้เลือก 2 แบบคือ
  • TracReports
    อันนี้ สามารถสร้าง report ใหม่ๆ เข้าไปได้
    แต่ต้อง define sql เอง
    โดยเราต้องมี permission REPORT_CREATE ก่อน
    จึงจะมี link ที่ทำให้สร้าง report ได้
  • TracQuery
    การสร้าง report ใหม่ๆก็จะทำผ่านหน้าจอ Query จากนั้นก็จด option
    ที่ใช้ ไปใส่ไว้ใน wiki ผ่านทาง TrackLinks หรือ macro


การออก report ที่ต้องการแสดง custom-field ด้วย รู้สึกว่าจะต้องใช้วิธี TracReports

Feature ที่ชอบอีกอย่าง ก็คือ
เราสามารถ add svn post commit hook เข้าไป
เพื่อที่จะนำเอา message ที่ developer commit เข้ามา
เอามา integrate เข้ากับ trac ticket ได้เช่น

svn commit -m 'Added time tracking, closes #1, spent 1h'

เมื่อ post hook script พบ คำว่า closed #1 -> ก็จะไปปิด Ticket #1 ให้เลย

รายละเอียดเพิ่มเติมดูใน Subversion commit hook

Related link from Roti

No comments: