*知っておくと便利な運用設定 [#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]]