0xC*_*ACE 4 svn hudson post-commit
我刚刚在我们的subversion存储库中设置了一个post-commit脚本,它通过请求一个hudson构建URL来触发构建.
这可以正常工作,但是现在我只想在提交到主干时触发此构建.
我们的提交后脚本如下所示:
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;%DIR%
wget http://circus-09:8080/job/UE/build?delay=0sec
Run Code Online (Sandbox Code Playgroud)
如何检查提交是否到主干?
这是一个快速的代码片段,当主干中的某些内容发生变化或没有变化时输出不同的消息:
set repos=%~1
set rev=%~2
call :did_it_change "%repos%" "%rev%" "trunk"
if %ERRORLEVEL%==1 (
echo trunk changed
) else (
echo no changes in trunk
)
exit /B 0
:did_it_change
set repos=%~1
set rev=%~2
set dir=%~3
set found=0
for /F "delims=/" %%p in ('svnlook dirs-changed "%repos%" -r %rev% 2^>NUL') do call :check "%%p" "%dir%"
exit /B %found%
:check
set check_string=%~1
set must_match=%~2
if "$%check_string%" == "$%must_match%" set found=1
exit /B 0
Run Code Online (Sandbox Code Playgroud)
注意,did_it_change函数可以与任何存储库根级别子目录一起使用,而不仅仅是trunk.检测新标签或分支非常有用.另请注意,该函数可以被调用任意次.
注意:这实际上并不检查源文件是否已更改 - 它只是检查修订更改目录列表中是否提到了trunk.可能是对某些目录或文件的svn属性进行了更改.