TracLightningでの「チケット無しのコミット禁止」設定について考えるテスト
チケット駆動開発の肝とされる「チケット無しのコミット禁止」をTracLightning環境で設定する場合にどうすればよいか、とりあえずの雛形を考えてみるテスト。
有り難いことにShibuya.tracに既にかなり近い形のhookスクリプトは準備されています。
http://sourceforge.jp/projects/shibuya-trac/wiki/trac%2Fknowledge#h3-TracLightning.E7.94.A8hook
#"refs #xxx"という書式に対するチェックを行うpre-commit.batがそれ。
これに対して欲しいのは、Tracがサポートしているコマンド全てを対象とする拡張を行ったもの。というわけでこいつの中身を覗いてみる。
SET REPOS=%1 SET TXN=%2 svnlook.exe log -t %TXN% %REPOS% | findstr /r /c:"refs #[0-9]" > null || exit 1 exit 0
えらくシンプル('ω`)
svnlookでログを取得してfindstrの正規表現検索で該当記述が無ければエラー終了、と。
ということはfindstrで検索する該当記述を増やせばいいことになる?
ちなみにTracがサポートしているコマンドは
class CommitHook: _supported_cmds = {'close': '_cmdClose', 'closed': '_cmdClose', 'closes': '_cmdClose', 'fix': '_cmdClose', 'fixed': '_cmdClose', 'fixes': '_cmdClose', 'addresses': '_cmdRefs', 're': '_cmdRefs', 'references': '_cmdRefs', 'refs': '_cmdRefs', 'see': '_cmdRefs'}
こんな感じなので真面目にやるならこれ全部羅列しとく必要がある。
あるいは、もっと真面目にやるなら
${TracLightRoot}\python-lib\trac\contrib\trac-pre-commit-hook
を呼び出して実行する?
但しこちらはチケットが存在していてかつcloseされていない事までチェックするので厳格すぎるかもしれない。
#ちょっとしたtypo修正とかだとcloseしたチケットへの追記としてコミットしたい事もあるので