はじめに
年末年始でSubversionのリポジトリを引越したり,BTSな開発脳を鍛えるべく,Tracをセットアップしたりしているissmです.
昨晩,ふと思い立ったのと勉強もかねて,Tracのプラグイン「Revtree」を入れてみました.
以下,その経緯をだらだらと書いていきます.
環境
放置していたThinkpad R32にUbuntu 9.10を入れて動かしています.
Revtreeプラグインについて
Revtreeは,Subversionリポジトリにおけるリビジョンの遷移とか派生状況とかをグラフィカルに表示してくれたりする,Tracのプラグインです.
以下,引用をいくつか.
概要
This plugin renders a graphical representation of the repository.
The plugin collects the repository’s revisions and rebuilds the branches based on the names of the files changed in each revision.
Filters can be used to choose which branches and which revisions are to be displayed.
Each depicted changeset is a clickable item that redirects the browser to the appropriate changeset view.
Whenever the mouse cursor is hovered over a revtree changeset, the browser opens a tool tip box that shows the revision number, the author and the date of the revision along with the wiki-formatted log message.
The plugin also shows branch cloning/tagging operations, and can be extended to render other kinds of operations such as merging.
RevtreePlugin – Trac Hacks – Plugins Macros etc. – Trac
インラインSVGに対応いているブラウザが必要
the RevtreePlugin generates inlined SVG.
SVG is only supported on modern browsers
inlined SVG means that the plugin generates XHTML+SVG data, which are only supported by a few browsers. Many browsers that support SVG do not accept inlined SVG. Checkout the following section for a non-exhaustive list of supported browsers.
RevtreePlugin – Trac Hacks – Plugins Macros etc. – Trac
「モダンな」ブラウザなら大丈夫そうです.
インストール
同ページを参考に作業を進めます.
ソースコードを取得する
% wget "http://trac-hacks.org/changeset/latest/revtreeplugin?old_path=/&filename=revtreeplugin&format=zip" -O revtreeplugin.zip % unzip revtreeplugin.zip % ls -l revtreeplugin 合計 12 drwxr-xr-x 4 iwata 4096 2010-01-07 03:00 0.10 drwxr-xr-x 8 iwata 4096 2010-01-07 03:01 0.11 drwxr-xr-x 5 iwata 4096 2010-01-07 03:00 0.12
現在入れているTracのバージョンが「0.11.5.ja1」なので,それに見合ったディレクトリに入ります.
% cd revtreeplugin/0.11
なんだかパーミッションが000なファイルが見られました.
% ls -l 合計 20 drwxr-xr-x 5 iwata 4096 2010-01-07 11:15 enhancers drwxr-xr-x 3 iwata 4096 2010-01-07 11:15 hooks drwxr-xr-x 4 iwata 4096 2010-01-07 11:15 revtree ---------- 1 iwata 51 2006-12-05 01:43 setup.cfg ---------- 1 iwata 1503 2008-11-19 19:12 setup.py % tree -p | head -n 20 . |-- [drwxr-xr-x] enhancers | |-- [drwxr-xr-x] logenhancer | | |-- [drwxr-xr-x] logenhancer | | | |-- [----------] __init__.py | | | `-- [----------] enhancer.py | | |-- [----------] setup.cfg | | `-- [----------] setup.py | |-- [drwxr-xr-x] mergeenhancer | | |-- [drwxr-xr-x] mergeenhancer | | | |-- [----------] __init__.py | | | `-- [----------] enhancer.py | | |-- [----------] setup.cfg | | `-- [----------] setup.py | `-- [drwxr-xr-x] mergeinfoenhancer | |-- [drwxr-xr-x] mergeinfoenhancer | | |-- [----------] __init__.py | | `-- [----------] enhancer.py | |-- [----------] setup.cfg | `-- [----------] setup.py
ので,テキトーにパーミッションを付加しました.
% chmod -R 755 *
セットアップスクリプトを実行する
入ったディレクトリ直下にあるsetyp.pyを,bdist_egg引数をつけて実行します.
% python setup.py bdist_egg
eggファイルをコピーする
セットアップスクリプトが無事終了したら,distディレクトリ以下にeggファイルができるので,これを,グローバルもしくはプロジェクトのプラグインディレクトリに放り込みます.
% cp dist/TracRevtreePlugin-0.6.3dev-py2.6.egg <pugin_directory>
設定
次のような内容をtrac.iniに追記します.
[trac] mainnav = wiki,timeline,revtree,roadmap,browser,tickets,newticket,search [components] revtree.* = enabled [revtree] branch_re = ^(?P<branch>branches/[^/]+|trunk|tags)(?:/(?P<path>.*))?$ trunks = trunk scale = 1.0 revbase = 1 abstime = True style = compact contexts =
プロジェクトごとに書くのもアレなので,グローバルなtrac.iniに書いておくといいかもです.
しかし,私の環境では,グローバルな設定を行っているtrac.ini,というかそれらしいディレクトリが見当たりませんでした.
グローバルな設定は Environment 固有の設定とマージされます。ローカルの設定はグローバルの設定を上書きます。グローバルな設定ファイルは以下のように指定します:
[inherit]
file = /usr/share/trac/conf/trac.ini
Note: 新しいプロジェクトを作る時に trac-admin の initenv コマンドに –inherit=/path/to/global/options オプションを追加することで、グローバル設定ファイルを指定することができます。 オプションを追加せずにプロジェクトを作成した場合でも、新しい Environment でグローバル設定ファイルを使用することができます。 新しく作成された conf/trac.ini ファイルを編集して、グローバルファイルの設定で上書きしたいエントリを削除すれば、 新しい Environment でグローバル設定ファイルを使用することができます。
% sudo mkdir -p /usr/local/trac/conf
この中にグローバルなtrac.iniを入れておきます.
プラグインについても同様にしておくとよさげですね.
% sudo mkdir -p /usr/local/trac/plugins
で,プロジェクトのtrac.iniを修正します.
[inherit] file = /usr/local/share/trac/conf/trac.ini plugins_dir = /usr/local/share/trac/plugins templates_dir =
Apacheの再起動
Trac の設定は
/conf/ にある trac.ini というファイルを編集して行います。変更した内容は通常、即座に反映されますが、 [components] セクションや [logging] セクションへの変更では Web サーバを再起動する必要があります。また、グローバルな設定ファイルを新しく作成した直後も Web サーバを再起動しなければなりません。
% sudo /etc/init.d/apache2 restart
表示を確認する
設定したプロジェクトのTracにアクセスしてみます.
あれ,変化がありません><
権限の追加
試しに,パスにrevtreeをつけて再度アクセスしてみたところ,次のようなエラーが(次図).
「REVTREE_VIEW」という権限が必要なんですね.確認してみます.
% trac-admin <projectenv> permission list User Action ------------------------------ anonymous BROWSER_VIEW anonymous CHANGESET_VIEW anonymous FILE_VIEW anonymous LOG_VIEW anonymous MILESTONE_VIEW anonymous REPORT_SQL_VIEW anonymous REPORT_VIEW anonymous ROADMAP_VIEW anonymous SEARCH_VIEW anonymous TICKET_VIEW anonymous TIMELINE_VIEW anonymous WIKI_VIEW authenticated TICKET_CREATE authenticated TICKET_MODIFY authenticated WIKI_CREATE authenticated WIKI_MODIFY Available actions: BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, EMAIL_VIEW, FILE_VIEW, LOG_VIEW, MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY, MILESTONE_VIEW, PERMISSION_ADMIN, PERMISSION_GRANT, PERMISSION_REVOKE, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY, REPORT_SQL_VIEW, REPORT_VIEW, REVTREE_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW, TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_EDIT_CC, TICKET_EDIT_DESCRIPTION, TICKET_MODIFY, TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE, WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW
確かに「REVTREE_VIEW」という権限はありません.また,同権限が「Available」ということもわかります.
ということで,同権限を追加します.ログインユーザ全員に与えておけばいいですかね.
% trac-admin <projectenv> permission add authenticated REVTREE_VIEW
再度確認してみます.
% trac-admin <projectenv> permission list User Action ------------------------------ anonymous BROWSER_VIEW anonymous CHANGESET_VIEW anonymous FILE_VIEW anonymous LOG_VIEW anonymous MILESTONE_VIEW anonymous REPORT_SQL_VIEW anonymous REPORT_VIEW anonymous ROADMAP_VIEW anonymous SEARCH_VIEW anonymous TICKET_VIEW anonymous TIMELINE_VIEW anonymous WIKI_VIEW authenticated REVTREE_VIEW authenticated TICKET_CREATE authenticated TICKET_MODIFY authenticated WIKI_CREATE authenticated WIKI_MODIFY Available actions: ...
無事追加されました.
再度表示を確認する
再度表示を確認してみます.
おぉ,メニューに「Rev Tree」が追加されました.グラフも表示されてます.
ちょっと気になる
こんな警告が出ますね.
/usr/local/share/trac/plugins/TracRevtreePlugin-0.6.3dev-py2.6.egg/revtree/svgview.py:17: DeprecationWarning: the md5 module is deprecated; use hashlib instead
Pythonについては無知なので,解決策がよくわかりません><
おわりに
以上,Revtreeプラグインを入れてみた経緯について書きました.この調子で(?),次のまとめを参考に,他の実用的なプラグインも追加してみます.
まぁそれ以前に,Trac開発脳を鍛えるのが先決ですが...



