Trac に PeerReviewPlugin を入れてみた

先日、ようやくアジャイルプラクティス読了

コミットされる前のコードをどうやってレビューするの?という初歩的な話。だってコミットされていないコードは基本的に開発者のローカルの環境にあるわけでしょ?

と書いていたけど、そう言えば reviewboard なんてものがあったなぁと思い出して動かすことを試みた。しかし

monospace blog オンラインソースコードレビューツールのReviewBoardをインストールしてみた

にしたがって Debian etch で作業してみたがあえなく失敗。(Python Image Library が入らなかった。Django も経験ないし。)

気分を替えて Trac に PeerReviewPlugin - Trac Hacks - Plugins Macros etc. - Trac をインストール。こっちは Trac の plugin 特有のクセを把握できてなくてちょっと手間取ったけどなんとか動いた。

※ Trac 0.10.4 with Apache 2.2 + mod_fastcgi on FreeBSD 6.3R と Trac 0.10.3 with Debian etch + Apache 2.2 + mod_python 3.2.10 で確認。

やったことは以下の通り。

  1. PeerReviewPlugin を Python モジュールとしてインストール
  2. Webサーバの方へ EGG 周りの設定を追加
  3. trac.ini で Trac インスタンスについて有効に
  4. trac-admin で権限を付与
  5. trac-admin PATH upgrade

plugin を Python モジュールとしてインストール

TracPlugins The Trac Project Trac のまま。

  • setuptools( easy_install ) をインストール
  • easy_install で PeerReviewPlugin をインストール(EGG として Python の site-packages に入る)

Trac のバージョンによって対応するものが違うのでそれに合わせてインストールすること。easy_install に慣れていなかったのでどこで何を指定して easy_install を起動すればいいのか分からなかったけど、エラーメッセージや back trace を読みながらよちよち作業を進めたらなんとかなった。こういうとき Python や Ruby で書かれたツールは助かる。

しかしあとになって実は下の Google Group のリンクをたどれば何をすればいいかが分かった。今回インストールしたのは 0.10 用のものなので

sudo easy_install http://trac-hacks.org/svn/peerreviewplugin/0.10

でよかった1

WebサーバにEGG用の設定を追加

以前 WebAdminPlugin を入れたときにももしかしたらやってたのかもしれないけど、あれは別な環境でやっていたのですっかり忘れていた。EGG は cache を指定しなければいけないらしく、FastCGI で動いているうちの環境では

 FastCgiConfig -initial-env TRAC_ENV=/var/lib/trac
+              -initial-env PYTHON_EGG_CACHE=/var/lib/trac/plugin-cache

を書き足した2。(パスはサンプルに載っているまんまなので適宜書き換えること。)

使いたい Trac インスタンスについて有効に

この部分の記述が全然不十分で手間取った。

trac.ini の中で

cannot install peerreview (not picked up) - trac-peerreview-dev | Google グループ

に従って

[components]
codereview.* = enabled

で plugin を有効にする。また

/peerreviewplugin/trunk/README.txt - Trac Hacks - Plugins Macros etc. - Trac

に従って

[trac]
mainnav = ..,peerReviewMain,..

を編集してメニューに組み込む3

権限の付与

trac-admin PATH permission list

とすると

  • CODE_REVIEW_DEV
  • CODE_REVIEW_MGR

が追加されているのでこの割り当てを行う4

使用感

ほんとに試しただけだけど、

  1. Trac の plugin なので当然 review 対象は reviewboard とは違って5 repository に commit 済みのコードの一部
  2. review の作成は 3 step か 4 step で、Ajax を使っていて難しいところはほぼない

という感じ。1 は運用ルールによっては問題になるけど、現状自分が関わっている部分では大丈夫かなと。

とりあえず Django のセットアップとか慣れないことをやらずに記録の残るレビューができそうなのはよさげだなと思っているところ。メール飛ばしたりなんだり、本格的には使っていないのでその辺は分かりません。

え? Retrospectiva はどうしたのかって? どうしましょうね。こうして plugin を使い始めると移行するのは難しいよねぇ。でもやっぱこういうプラグインのセットアップも Trac インスタンスごとにやらなきゃいけないのはイヤなんだよな。

[2008-06-02 追記] Review の様子が timeline に出ないぞ? timeline に出なかったら Review の追加はどうやって知るのだ? メールとか飛ばす設定があるのか? うーん、そりゃあどうだ。不便じゃないか?

Ticket みたいに Search の結果の feed を吐けるのかな、と思ったけどそんなこともない。というか自分宛に依頼のあった Review という条件では検索はできない。(まぁ My Code Reviews で出てはくるんだけど。)なんだかな。なんだかなぁ? 0.10 だからかい?

[2008-06-04 追記] あれ? Wiki の [source: link] 形式の記述が Source Browser じゃなくて peerReviewBrowser への link になって怒られるぞ? えーー。なんだよー。ダメじゃんよー。何乗っ取ってんだよー。

  1. svn co も自動でやってくれるなんてすごい変態的なツールに見えるけど、こんなもんなの? 

  2. mod_python の場合は SetEnv PYTHON_EGG_CACHE /var/lib/trac/plugin-cache になる。 

  3. 長い…。どうしたらいいんだ。 

  4. REVIEW を見るだけって権限がないんだよなぁ。 

  5. reviewboard の場合は repository とは別に patch を up して review 開始って感じらしい。 

More