Tracを便利に使うためのお約束ふたつ

加藤です。

社内で新しいプロジェクトを立ち上げたので、久しぶりにTracのセットアップをおこないました。いつも間隔があいてしまうので手順は何回やっても憶えませんが、僕がいつも使うお約束の設定がふたつほどあるので、今回はそれを紹介したいと思います。

その1: TracNavでショートカットメニューをつくる

Tracのカスタムクエリは非常に多機能ですばらしいのですが、見たい項目は決まっていますし、いちいちView Ticketsに行って確認するのは面倒です。そこで、 TracのWikiを使いやすくする というエントリーで紹介した TracNav を使ってトップページにショートカット用のメニューを設置します。

僕の場合、Tracのプロジェクトを作成して必要なプラグインをインストールしたら、まずトップページのWikiの内容を全部消して下のような感じに書き換えます。

= プロジェクト名 =

[[TracNav(TracMenu)]]

プロジェクトの概要...

[[TracNav(TracMenu)]]の部分がTracNavのマクロです。まだメニューの中身をつくっていないので、最初は画面の右側に空のメニューが表示されます。

このメニューのグレーの部分かeditをクリックしてメニューの中身を編集します。下の例のように、担当者別、マイルストーン別、コンポーネント別に仕分けして表示するカスタムクエリをショートカットとして設置しておくと便利でしょう。

 * マイルストーン
   * [milestone:"milestone1" milestone1]
 * チケット
   * [query:status=new|assigned|reopened&group=owner&order=milestone 担当者別]
   * [query:status=new|assigned|reopened&group=milestone マイルストーン別]
   * [query:status=new|assigned|reopened&group=component&order=milestone コンポーネント別]

編集を完了してトップページにもどると、メニューからマイルストーンやカスタムクエリに直接アクセスできるようになっています。

その2: Timing and Estimation Plugin で DRY に時間を管理する

Timing and Estimation Plugin はTracのチケットに見積り時間や実績時間を入力できるようにするプラグインです。このプラグインを入れると、 こんな感じで 時間の消費状況を一覧で見ることができます。インストール方法はプラグインのページを参考にしてください。

で、このプラグインのどこがイカしているかっていうと、TracのSubversion連携を使って、コミットするのと同時に作業で要した時間も記録できるところです。例えば、#12番のチケットに関連する作業で2時間半費やしたとしたら、以下のようにコミットすることで、#12番のチケットに2.5時間の実績が加えられます。

% svn commit -m "refs #12 (2.5) モテるアクションを追加した"

このプラグインを入れたうえで、「作業をおこなったら所要時間と一緒にコードをコミットすること」というルールを徹底すれば、

  1. チケットの登録率があがる
  2. どんな成果物もなるべくSubversionで管理するようになる
  3. コミット間隔が短くなる

と何から何までいいことづくめになります。本当です。

この機能をつかうには、Timing and Estimation Pluginの contrib/trac-post-commit-hook/usr/share/trac/contrib/などに置いたうえで、以下のようなスクリプトをSubversionリポジトリのhooks/post-commitへ実行権限付きで設置してください。

#!/bin/sh

REPOS="$1"
REV="$2"

export LANG=ja_JP.UTF-8

LOG=`/usr/bin/svnlook log -r $REV $REPOS`
AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS`
TRAC_ENV='/trac/project/path'

/usr/bin/python /usr/share/trac/contrib/trac-post-commit-hook \
  -p "$TRAC_ENV"  \
  -r "$REV"       \
  -u "$AUTHOR"    \
  -m "$LOG"
Bookmark and Share