trac 0.12 のマルチリポジトリでrefs #1をうまく動かす Multi Repository Helper Plugin を作りました
Tracはバージョン0.12でマルチリポジトリに対応しています
設定はこんな感じですね。
- Trac0.12の配布アーカイブ内にある contrib/trac-svn-hook スクリプトを適当な場所に配置する
- この例では、/opt/trac-0.12/hooks としています。環境に合わせて読み替えます。
- #{SVN_ROOT}/#{PROJECT}/hooks/post-commit を作成します
#!/bin/sh # REPOS=$1 REV=$2 export TRAC_ENV=/var/www/html/trac012/proj1:/var/www/html/trac012/proj2 /opt/trac-0.12/hooks/trac-svn-hook $REPOS $REV
上記のように複数のTracプロジェクト(プロジェクトAとプロジェクトB)が同じSVNリポジトリ(リポジトリ1)を参照している場合に、困ったことがおきます
ふつう、チケットとタスクは1対1ですから、どちらかのプロジェクトの1番チケットに対してのタスクを行ってコミットしているはずですよね(たとえばプロジェクトAの1番チケットのタスクとして、このようにコミットする場合)
共通ライブラリ的なものは、別リポジトリになりがち(え、違いますか?すみません)とおもいますので、このようなことがおきてしまいがちと思います。
ということで、次のような書式のrefsを受け取った場合に、目的のプロジェクトのチケットにコメントを残すようにできるPluginを作りました
- refs #projectA/1
また、#projectA/1がリンクとして機能するようにもしています。
shibya-tracのリポジトリに置かせていただきました。
インストールはソースをチェックアウトしてEGGファイルを作って、プラグイン保存ディレクトリに配置してください。
$ svn checkout http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/MultiRepositoryHelperPlugin/trunk/ multiRepositoryHelperPlugin $ cd MultiRepositoryHelperPlugin/ $ python setup.py bdist_egg $ cp dist/TracMultiRepositoryHelperPlugin-0.1-py2.4.egg /path/to/trac-plugindir
Trac0.12からはプラグインのディレクトリが変わっていて/usr/share/tracとか無くなっています。
ですので、site-packages か、各プロジェクトのpluginsに入れてください。管理画面からアップロードできるようになっています。
また、EGGを配置したらTrac0.12の管理画面でプラグインを有効化します。
なお、次の制限があります。
- refs #プロジェクト名/チケット番号の書式のみの対応です
- 複数のチケットにリンクする場合は、とりあえずのところは refs #projectA/1 refs #projectB/5 などとrefsを省略せずに書いてください(refs #projectA/1, #projectB/5のような記載には対応していません)
- fixes #hoge/1というように、fixesにも対応していません
※参考にしたページ
http://coders.g.hatena.ne.jp/bellbind/20070420/p1
http://trac.edgewall.org/wiki/TracDev/PluginDevelopment
http://trac.edgewall.org/wiki/TracDev/ApiChanges/0.12#IRepositoryChangeListener