저는 사용자가 제공 한 문제 추적 ID를 확인하기 위해 문제 추적 시스템에 쿼리하기 위해 Python 스크립트를 호출하는 SVN pre-commit.bat 파일을 작성했습니다. 올바른 상태 (예 : "열린"상태)와 올바른 프로젝트와 관련됩니다. SVN 서버는 Windows를 실행 중입니다 (2003 서버 - 생각한다면 IT 그룹과상의 할 수 있습니다 ...).Windows 서버에서 SVN 사전 커밋 스크립트를 실패 할 수 없습니다.
문제는 내가 SVN 커밋을 실패하게 만들 수 없다는 것입니다. 그것은 항상 성공합니다. AFAIK는 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 파일입니다. 또한 '오류'함수가 실행되는 것을 확신합니다. 단순히 "exit 1"반환 코드가 SVN에 의해 무시되는 것입니까?
* 참고 : 사실이 아닙니다. 내가 커밋을 실패한 유일한 방법은 Python 스크립트에 런타임 오류가있는 경우입니다. 그러나 의도적 인 런타임 오류를 생성하는 것은이 경우 적절한 해결 방법이 아닙니다.
관심을 가져 주셔서 감사합니다.
Python 스크립트와 "err"기능을 완전히 배제하기 위해 pre-commit.bat 파일에 "exit 1"한 줄만 입력하면 커밋은 계속 성공합니다. – spargopolis
(이전) SVN 관리자에게 이야기 했습니까? –