私は SVN pre-commit.bat ファイルを作成しています。このファイルは Python スクリプトを呼び出して問題追跡システムにクエリを実行し、ユーザーが指定した問題追跡 ID が正しい状態 (「オープン」状態など) にあり、適切な状態に関連付けられているかどうかを判断します。事業。SVNサーバーはWindowsを実行しています(2003サーバーだと思います-問題がある場合はITグループに確認できます...)。
問題は、SVN コミットを失敗させることができないように見えることです*。それは常に成功します。私の知る限り、Pythonスクリプトは本来あるべきことを行っています。失敗した場合は「sys.exit(1)」を呼び出します (成功した場合は「sys.exit(0)」を呼び出します)。.bat ファイルについては、このフォーラムのいくつかの例を採用しましたが、うまくいくと言われていますが、まだ運がありません。少し簡略化した .bat ファイルを次に示します。
@echo off
set repos=%1
set transaction=%2
set proj=ferry
\Python26\python svn_sync.py -s --repos=%repos% --transaction=%transaction% --project=%proj%
IF %ERRORLEVEL% GTR 0 (GOTO err) else exit 0
REM This should return a failure to Subversion, but does not
:err
echo 1>&2
echo Your commit has failed due to invalid PR or PR state. 1>&2
echo Thanks 1>&2
exit 1
繰り返しますが、スクリプトが実行されていること (つまり、サーバー上の環境変数の問題ではないこと) と、sys.exit(1)
コードがヒットしていることはわかっています。また、「err」関数が実行されていることは確かですが、単に「exit 1」の戻りコードが SVN によって無視されているということですか?
*注: 正確ではありません。コミットを失敗させた唯一の方法は、Python スクリプトに実行時エラーが発生した場合です。ただし、意図的な実行時エラーの生成は、この場合の回避策として受け入れられません。
ご関心をお寄せいただきありがとうございます。