マルチプロジェクト TraM

Tracをプロジェクト毎に分割して使ってると、どうしてもプロジェクトを跨いでチケット閲覧がしたいという要求が出てくる。
しかし、Tracの設計思想として「1リポジトリ1Trac」というのが基本になっているようで、デフォルトの機能としては、プロジェクトを跨いだデータ閲覧は搭載されていない。

これを解決する手段として、TraMというプラグインが開発されている。
導入するとどうなるかは運用サイトを見てもらえばわかるが、マルチプロジェクトを運営している人にとっては理想的な表示が可能となっている。
但し、まだ開発途上であるため、機能としてはプロジェクト一覧と未解決チケットのクエリ、ロードマップ及びリポジトリブラウザのトップまでしか実装されていない。

試しにインストールしてみたが、手順がどこにも記載されていないので書き留めておく。

  • 前提として、mod_python必須。
  • まずSVNリポジトリからソースをチェックアウトしてきて、出来たTramフォルダをpythonのsite-packagesフォルダにコピーする。ただし、そのままコピーするとモジュールロードでこけるため、フォルダ名の頭文字を小文字にしておく(Tram→tram)。
  • 次に、まとめ用のtracフォルダをtrac-adminで作成する。名前は「all」固定。TracSVNリポジトリ必須のため、ダミー用のSVNリポジトリを事前に作っておく。
>svnadmin create --fs-type fsfs /var/svn/repos/projects
>trac-admin /var/trac/all initenv
  • Apacheの設定ファイルを編集する。まず、全てのTracプロジェクトの「trac.web.modpython_frontend」を「tram.modpython_frontend」に変換する。次に、上記のまとめ用Tracの設定を加えるが、通常のTrac設定と異なり、TracEnvParentDirを必ず設定する必要がある。また、TracUriRootはまとめフォルダ"/all"を含めない。

    SetHandler mod_python
    PythonHandler tram.modpython_frontend
    PythonOption TracUriRoot "/projects"
    PythonOption TracEnv /var/trac/all
    PythonOption TracEnvParentDir /var/trac

あとはApacheを再起動すれば、晴れて全プロジェクトの未解決チケットが見渡せる。
…といいたいところだが、実はTracバーのView Ticketsは「/report」へのリンクであり、「/query」ではないため、ソースかテンプレートを改変する必要がある。
手元にソースが無いため残りは後ほど。