我正在编写一个 SVN pre-commit.bat 文件,该文件调用 Python 脚本来查询我们的问题跟踪系统,以确定用户提供的问题跟踪 ID 是否处于正确状态(例如“打开”状态)并与权限相关联项目。SVN 服务器正在运行 Windows(我认为是 2003 服务器 - 如果有问题,我可以与我们的 IT 小组联系......)。
问题是我似乎无法使 SVN 提交失败*;它总是成功的。AFAIK 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”函数正在运行,仅仅是“退出 1”返回码被 SVN 忽略了吗?
*注:不完全正确;我提交失败的唯一方法是 Python 脚本出现运行时错误。但是,在这种情况下,生成故意的运行时错误不是可接受的解决方法。
感谢您的关注。