*知っておくと便利な運用設定 [#qdbbbb26]
#contents

**TracとSubversionの連携 [#k53a89bc]
Subversionのクライアント(TortoiseSVN等)にTracのチケットIDのリンクを表示する事が可能になります

- リポジトリの属性(プロパティ)に以下の値をセットする
-- bugtraq:label (チケットID入力欄のラベル名) 
 TicketID
-- bugtraq:url (チケットIDに対するチケットへのリンク設定)
 http://fmXX/trac/projectname/ticket/%BUGID%
-- bugtraq:warnifnoissue (チケットID未入力時の警告表示)
 true
---  未設定の場合はfalse扱いとなります
-- bugtraq:message (SVNログに表示されるリンクの表示形式)
 (#%BUGID%)
-- bugtraq:logregex (チケットのテキストボックスではなく、ログ入力にチケットIDが記述出来る)
 ticket:(\d+)|#(\d+)
 (\d+)

- bugtraq:logregexは後述するチケットへコメントを自動追加、チケットの自動クローズに必須になる設定です。

**Subversionのコミットから連動してTracのチケットのコメントの追加や自動クローズ [#j6a5629c]

- Tracではチケットへコメントを追加したり、ステータスの変更を''trac-post-commit-hook''で行っています。
- Subversionはコミット後にpost-commitが動きますので、post-commitでtrac-post-commit-hookを呼び出すようにして、機能を実現出来ます。
- trac-post-commit-hookが必要とする引数は
-- ''リビジョン番号''
-- ''ユーザ名''
-- ''記述するログ''
- Subversionのpost-commitに渡ってくる引数は、リポジトリへのパスと、リビジョン番号なので、ユーザ名とログを別途取得する必要があります。
-- 取得の仕方はPythonでもVBScriptでも可能ですが、ここでは''Python''で取得する事にします。
+ trac-post-commit-hookをSubversionのリポジトリの実ディレクトリにある、hoooksにコピーします。
-- 直接、Tracのディレクトリを指しても可能ですが、ここでは念のため別にコピーしておきます。
+ 同じディレクトリにpost-commit.pyを作成します。
+ post-commit.pyを以下のように編集、保存します
 import sys, os
 
 repos = sys.argv[1]
 rev = sys.argv[2]
 
 #os.environ['PYTHONPATH'] = "D:/TracLight/python/Lib/site-packages"
 
 log = os.popen("svnlook log -r " + rev + " " + repos).read().strip()
 author = os.popen("svnlook author -r " + rev + " " + repos).read().strip()
 
 os.popen("D:/TracLight/python/python.exe 
   D:/TracLight/projects/svn/test1/hooks/trac-post-commit-hook -p 
   \"D:/TracLight/projects/trac/test1\"  -r \""
   + rev + "\" -u \"" + author + "\"  -m \"" + log + "\"")
-- ''パスは環境に合わせて適宜変更する事''
-- 簡単に解説すると、pythonからsvnlookを呼びだし、ログとユーザ名を取得して、trac-post-commit-hookへの引数にしています。
-- コメントになっている
 #os.environ['PYTHONPATH'] = "D:/TracLight/python/Lib/site-packages"
の行は、環境によっては必要になるので、エラーが発生したらコメントを外して下さい。

-- svnlookへのパスが通っていない場合は、パスを通すかスクリプトをフルパスに変更する事
+ 同じディレクトリにpost-commit.batを作成します。
+ post-commit.batを以下のように編集、保存します
 D:/TracLight/python/python.exe D:/TracLight/projects/svn/test1/hooks/post-commit.py %1 %2
-- ''パスは環境に合わせて適宜変更する事''
-- 先ほど作成したpost-commit.pyをbatから呼び出すようにしています。

- ''※ 注意 : 以下、bugtraq:logregexが登録されていないと行えません。''
- Subversionからコミット時に
 refs #10
と入力すると、チケット10にコミット時に入力したコメントが追加されます。
- Subversionからコミット時に
 fixes #10
と入力すると、チケット10にコミット時に入力したコメントが追加され、チケットがクローズされます。
- 複数チケットに対して行うには
 refs #12, #23, #34
 fixes #12, #23, #34
のように記述すれば可能です。

**参考リンク [#e7f05a17]

-[[TortoiseSVNやSubclipseとチケットを連動>http://discypus.jp/wiki/?%A5%BD%A5%D5%A5%C8%2FBug%20Tracking%2Ftrac%2FTortoiseSVN%A4%E4Subclipse%A4%C8%A5%C1%A5%B1%A5%C3%A5%C8%A4%F2%CF%A2%C6%B0]]
-[[Subversionコミット時メール送信とTracチケットの自動クローズ >http://yamashita.dyndns.org/blog/247/]]
-[[Subversionコミット時にtracチケットの自動クローズ、をWindowsで>http://d.hatena.ne.jp/wata_d/20061017/1161060145]]
-[[気の向くままに...>http://syo.cocolog-nifty.com/freely/2008/02/tracsubversion_cb3f.html]]