私が問題追跡システムに問い合わせるためのPythonスクリプトを呼び出すSVN pre-commit.batファイルを作成しています。正しい状態(例えば、「開いた」状態)であり、正しいプロジェクトに関連する。 SVNサーバーはWindowsを実行しています(私は2003年のサーバーだと思いますが、問題がある場合はITグループに確認できます)。WindowsサーバでSVNプリコミットスクリプトを失敗できません
問題は、SVNコミットが失敗するように見えないことです。それは常に成功する。 Pythonスクリプトが必要なことをしています。失敗の場合は "sys.exit(1)"を、成功する場合は "sys.exit(0)"を呼び出します。 .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
は再び私は、スクリプトが(サーバー上すなわちないENV変数の問題)実行されていることを知っている、と
sys.exit(1)
コードがヒットしている、やや単純化.batファイルです。また、 'err'関数が実行されていることは間違いないと思いますが、単に "exit 1"のリターンコードがSVNによって無視されているだけです。
*注:これは間違いありません。コミットが失敗した唯一の方法は、Pythonスクリプトに実行時エラーがある場合です。しかし、意図的な実行時エラーを生成することは、この場合には回避策ではありません。
ありがとうございます。
Pythonスクリプトと "err"関数を完全に除外するために、私はpre-commit.batファイルに1行の "exit 1"を含め、コミットは成功します。 – spargopolis
あなたの(前の)SVN管理者に相談しましたか? –