概要
* Subversionは、hookと呼ばれる、コミット前後などのイベントをフックして 処理を制御することができる。
環境
* OS : WIndows7
手順
[1] pre-commit.bat(下記サンプル「pre-commit.bat」を参照のこと)を作成し、「【リポジトリ】\hooks」に格納する [2] 検証スクリプト(下記サンプル「validate.js」を参照のこと)を作成し、 手順[1]で保存したフォルダ内「【リポジトリ】\hooks」に格納する
サンプル
pre-commit.bat
set repository=%1 set transaction=%2 REM コメントがあるかどうかをチェック cscript //nologo %0\..\validate.js "%rrepository%" "%transaction%" REM 検証結果をsubversionに返す(0ならコミット可能) exit %ERRORLEVEL%
validate.js
var svn_repos = WScript.Arguments.Unnamed(0); var svn_transaction_id = WScript.Arguments.Unnamed(1); var ws = WScript.CreateObject("WScript.Shell"); var cmd_get_comment = "svnlook -t \"" + svn_transaction_id + "\" log \"" + svn_repos + "\""; var proc = ws.Exec(cmd_get_comment); while(proc.Status == 0) { WScript.Sleep(100); } var svn_comment = proc.StdOut.ReadAll(); svn_comment = svn_comment.replace(/(\r|\n|\t| | )/g, ""); if(svn_comment.length > 0) { // 正常終了コードを返して終了 WScript.Quit(0); } else { WScript.StdErr.Write("ログメッセージが記入して下さい"); WScript.Quit(1); }
参考文献
http://d.hatena.ne.jp/language_and_engineering/20100819/p1
コミット後にログを再編集できるようにするには...
環境
* OS : WIndowsXP * TortoiseSVN : TortoiseSVN 1.7.10
手順
前準備
* pre-revprop-change.bat(下記サンプル「pre-revprop-change.bat」を参照のこと)を作成し、 「【リポジトリ】\hooks」に格納する
コメント修正するには...
[1] リポジトリブラウザで、対象のフォルダ・ファイルを右クリックし、[ログ表示]を選択 [2] 対象のリビジョンを右クリックし、[ログメッセージを編集]を選択 [3] メッセージを編集し、「OK」ボタン押下 => 前準備を行っていないと、以下のエラーが表示され、編集できない ■エラー内容 リポジトリが、リビジョン属性を変更できるようにはなっていません。 管理者に pre-revprop-change フックを作成するよう頼んでください。
サンプル
pre-revprop-change.bat
if "%5"=="M" ( if "%4"=="svn:log" ( exit 0 ) ) echo "Changing revision properties other than svn:log is prohibited" >&2 exit 1