SVNコミット時にコメントを必須にしたい
あるプロジェクトのリーダから、「SVNへのコミット時にコメントを必須にしたいのだけど...」と相談を受けました。
「ああ、あれね。」ということで、早とちりをして、以下の設定を行いました。
以下の設定では、TracLightningをEドライブにインストールしてある前提で、
- Subversionのフックスクリプトを設置
- E:\TracLight\projects\svn\<プロジェクト名>\hooks\post-commit.batを別名コピー(pre-commit.bat)します
- 実行ファイルの作成
- E:\TracLight\bin\pre-commit.shを作成
以下、pre-commit.bat
SET TRAC_LIGHT_HOME=e:\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 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/pre-commit.sh "%1" %2 "%TL_PROJECT_HOME%" "%PROJECT%"
以下、pre-commit.sh
#!/bin/sh REPOS="$1" TXN="$2" TRAC_LIGHT_HOME="$3" PROJECT="$4" TRAC_ENV="$TRAC_LIGHT_HOME/projects/trac/$PROJECT" LOG=`svnlook log -t "$TXN" "$REPOS"` $TRAC_LIGHT_HOME/python/python.exe $TRAC_LIGHT_HOME/python-lib/trac/contrib/trac-post-commit-hook "$TRAC_ENV" "$LOG" || exit 1
これらの設定はサービスの再起動も必要なく、即時反映されます。
しかし、これらの設定は私の早とちりであり、
要望・・・SVNへのコミット時にコメントを必須にしたい
設定・・・チケットに対するコメントを必須にしたい
となってしまってます。
もう一度リーダにヒアリングしたところ、コミットメッセージに関する制約は緩く、
空コメントだけを禁止にしたくて、単に数文字でも記入されていればOKということなので、
pre-commit.shを以下のように変更して対応しました。
以下、pre-commit.sh
#!/bin/sh REPOS="$1" TXN="$2" TRAC_LIGHT_HOME="$3" PROJECT="$4" TRAC_ENV="$TRAC_LIGHT_HOME/projects/trac/$PROJECT" LOG=`svnlook log -t "$TXN" "$REPOS"` WC=${#LOG} if [ $WC -gt 7 ]; then exit 0 else exit 1 fi
コミット時のコメントは8バイト以上あれば、コミットされ、それより少なければコミットできない仕様です。
めでたしめでたし。
それにしても、TracLightのBINの配下にある、bash.exeやsed.exeは便利ですね。
これって、他の用途に使用してもよいのかな〜。。。