概要
* Subversionは、hookと呼ばれる、コミット前後などのイベントをフックして
処理を制御することができる。
ログコメントを必須にするには...
* ログコメントが書かれていない時に、コミットを行った場合、
エラーとなり、コミットを行われない方法を記載する(ネットによく乗っているもの)
手順
[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
参考文献
http://www.bnote.net/windows/windows/svn_logedit.shtml