« Subversionでのリビジョン削除 | トップページ | ipod touch/iphone用EBPocketの辞書データ転送 »

2012年8月15日 (水)

svnのpre-lockスクリプト(windows)

pre-lockスクリプトではまったのでメモ。

ほかのhookではバッチファイルの実行結果が出ないのに、
何故かpre-lockではそのまま出てしまう
。これが災いしてエラーになる。
たとえば以下のように。

@echo off
rem "@echo off"は先頭に必要です。
set PATH=C:\Windows;C:\Windows\system32;

cscript //nologo %~dp0_pre-lock.wsf %1 %2 %3 %4 %5
if ERRORLEVEL 1 goto fail

:success
exit 0

:fail
exit 1

さらに上記では、wsfを呼び出している。そこももし表示するようにしていればエラーになるので注意。以下はその_pre-lock.wsfの内容。

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="SvnPreLock">
<?job error="True" debug="True" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="jscript">
<![CDATA[

//WScript.echo("OK!");//pre-lockではechoを出してはいけない
//WScript.Quit(1);//異常終了
WScript.Quit(0);//正常終了

]]>
</script>
</job>
</package>

追記:
上記にエラー処理も入れた場合、エラーのとき「ロックが pre-lock フックによって妨げられました (終了コード: 99)。出力はありません。」と出てしまいます。

何のエラーかわかるようにしたいと思い、無理やりバッチファイルでメッセージを標準エラーに出力。

@echo off
rem "@echo off"は先頭に必要です。
set PATH=C:\Windows;C:\Windows\system32;

cscript //nologo %~dp0_pre-lock.wsf %1 %2 %3 %4 %5
if ERRORLEVEL 2 goto fail
if ERRORLEVEL 1 goto fail1

:success
exit 0

:fail1
@echo on
echo コメントを入力してください。>&2
exit 99

:fail
exit 1

標準エラーに出力してもいいのかよくわかってませんが、とりあえず思惑通りの動き。
「ロックが pre-lock フックによって妨げられました (終了コード: 99)。出力:
コメントを入力してください。」のように表示されます。

|

« Subversionでのリビジョン削除 | トップページ | ipod touch/iphone用EBPocketの辞書データ転送 »

Subversion」カテゴリの記事

JavaScript」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: svnのpre-lockスクリプト(windows):

« Subversionでのリビジョン削除 | トップページ | ipod touch/iphone用EBPocketの辞書データ転送 »