前陣子我在 blog 上簡單介紹了 Trac Aggregator,因為在工作上總是必須多個專案同時進行,相互依存,又因為當初規劃 repository 的決策,造成搭配 Trac 時,因為 Trac 沒有 multi-project support,而使用起來非常麻煩[1]。所以只好簡單地寫了這個 PHP script 當作個人工作用的 issue portal。

其實說穿了很簡單,Trac 的 report 是藉由讓使用者自行編輯 SQL 指令而產生的。而 Trac 的資料庫就放在 TRAC_ENV 下的 db/trac.db 這個 SQLite 資料檔裡。所以我們只要自己用 PHP 開 SQLite 資料檔,然後把 Trac 裡的 report 的 SQL 指令搬過來,排版 output 一下,簡易版 Trac Aggregator 就完成了。

比較麻煩的,反而是如何呈現跨專案的 ticket list。由於每個專案的 milestone 進度都不會相同,排序的問題就相對地複雜很多。目前我只是簡單地在 script 裡,用 compositional compare function 的方法,建立多 key 的 sorting 機制,以便我可以依需要改變排序方法。但 milestone 進度的問題,依然還是沒有解決。這是下一階段的目標。


  1. 因為這些專案其實都不會大到,需要在 issue tracker 裡在細分 components 各別追蹤,如果我是把所有專案都放在同一個 project 裡的話,剛好可以用一個 TRAC_ENV 管理所有專案,用 components 來區分不同的專案。不過話又說回來,這樣子 Trac 的 Roadmap 功能就又不是那麼的適用了。