« 宣伝:Shibuya.trac勉強会第4回 | トップページ | Trac - MS-Project連携の状況 »

2009年6月15日 (月)

リポジトリを共有しない場合で隣のプロジェクトへコミット時のメッセージをつける

以前の記事では,Tracのプロジェクトを共有する場合に,隣のプロジェクトにコミットメッセージをつける方法を書きましたが,チェンジセットへのリンクを少し変更すれば,リポジトリを共有しない場合でも使えることに気づきましたので,その方法について書いてみます.

この内容はShibuya.trac勉強会第4回の発表のなかで少し触れる予定です.

前回のものは次のようになっていましたが

(In [1]) refs tr2:#1

今回は次のように変更します

(In [tr2:changeset:1 1]) refs tr2:#1

1. プロジェクトを作成します
Tracのコマンドプロンプトを開き次のコマンドでプロジェクトを二つ作ります.

C:\TracLight\bin>create-project tr1
C:\TracLight\bin>create-project tr2

2. InterTracの設定を追加します
次の二つのファイルの最後のところに
C:\TracLight\projects\trac\tr1\conf\trac.ini
C:\TracLight\projects\trac\tr2\conf\trac.ini
次のものを追加します.

[intertrac]
tr1.title = Trac Test Project 1
tr1.url = http://192.168.1.8/trac/tr1
tr2.title = Trac Test Project 2
tr2.url = http://192.168.1.8/trac/tr2

3. trac-post-commit-hookを修正します.
設定しないほかのプロジェクトには影響しないようにC:\TracLight\python-lib\trac\contrib\のtrac-post-commit-hookをコピーし,trac-post-commit-hook2を作成します.前回からの変更の概略は次のようにコミットメッセージをInterTrac形式のメッセージに変更します.

tracproj = project[str.rfind(project,'/')+1:]
中略

self.msg = "(In [%s:changeset:%s %s]) %s" % (tracproj, rev, rev, chgset.message)

前回の修正も含んだ「trac-post-commit-hook2」をダウンロード

4. プロジェクトごとに使うかどうかを設定できるようにします
C:\TracLight\projects\svn\tr1\hooks\post-commit.bat
を,post-commit2.shを呼ぶために次のようにします.

SET TRAC_LIGHT_HOME=C:\TracLight

if not DEFINED TL_PROJECT_HOME set TL_PROJECT_HOME=%TRAC_LIGHT_HOME%\projects

::-----------------------------
::Call the TRAC post-commit hook
::
SET REPOS="%1"
SET REV=%2
echo %1 >> c:\trac-svn.log

FOR /F "usebackq delims==" %%i IN (`%TRAC_LIGHT_HOME%\python\python.exe -c "import sys,re;r=re.split('\\\\',sys.argv[1]);print r[len(r)-1]" %REPOS%`) DO SET PROJECT=%%i

%TRAC_LIGHT_HOME%\bin\bash.exe %TRAC_LIGHT_HOME%/bin/post-commit2.sh "%1" %2 "%TL_PROJECT_HOME%" "%PROJECT%"

上の変更から呼ばれるようになったファイルのC:\TracLight\bin\post-commit2.sh
をpost-commit.shを元にして,trac-post-commit-hook から trac-post-commit-hook2に変更します

REPOS="$1"
REV=$2
TL_PROJECT_HOME="$3"
PROJECT="$4"


LOG=`svnlook log -r $REV "$REPOS"`
AUTHOR=`svnlook author -r $REV "$REPOS"`
TRAC_ENV="$TL_PROJECT_HOME/trac/$PROJECT"

$TRAC_LIGHT_HOME/python/python.exe $TRAC_LIGHT_HOME/python-lib/trac/contrib/trac-post-commit-hook2 \
   -p "$TRAC_ENV"  \
   -r "$REV"       \
   -u "$AUTHOR"    \
   -m "$LOG"

5. 確認

リポジトリに何か登録しコミットします

svn co http://192.168.1.8/svn/tr1
cd tr1
mkdir trunk
svn add trunk
echo aaaaa > aaaa.txt
svn add aaaa.txt
svn ci -m "refs tr2:#1"

tr2:#1をブラウザで開きます.

Trticket01

チェンジセットのリンク部分をクリックして,チェンジセットを確認します.

Trticket02

リポジトリを共有しない場合でもチェンジセットへのリンクを張ることができました.

インストール先とか環境に依存するものは適切に設定してください.

|

« 宣伝:Shibuya.trac勉強会第4回 | トップページ | Trac - MS-Project連携の状況 »

Trac」カテゴリの記事

SVN」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: リポジトリを共有しない場合で隣のプロジェクトへコミット時のメッセージをつける:

« 宣伝:Shibuya.trac勉強会第4回 | トップページ | Trac - MS-Project連携の状況 »