我刚刚建立了我们颠覆存储库通过请求哈德森构建URL触发生成后提交脚本。
这按预期工作正常,但是现在我只想触发此构建若犯是躯干。
我们的post-commit脚本如下所示:
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;%DIR%
wget http://circus-09:8080/job/UE/build?delay=0sec
如何我检查承诺是到主干?
我刚刚建立了我们颠覆存储库通过请求哈德森构建URL触发生成后提交脚本。
这按预期工作正常,但是现在我只想触发此构建若犯是躯干。
我们的post-commit脚本如下所示:
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;%DIR%
wget http://circus-09:8080/job/UE/build?delay=0sec
如何我检查承诺是到主干?
下面是一个简单的代码片段,当东西主干改变或没有具有输出不同的消息:
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
请注意,:did_it_change功能可以与任何版本库的根级子目录中使用,而不只是树干。 非常有用的,以检测新的标签或分支机构。 另外请注意,该函数可以调用任意次数。
注意:这不会实际检查,如果源文件修改或没有 - 它只是检查是否躯干在改变目录列表中的修订提及。 这可能是因为改变了一些目录或文件的SVN属性。
据我知道有没有简单的方法与颠覆做到这一点:之后的任何提交到库后提交脚本运行,无论它是在主干或分支。
你可以尝试来确定修改过的文件(可能使用的位置svnlook changed
和一些正则表达式)在你的脚本,当然..
作为Paulius'回答说,svnlook的给你修改的细节,它只是需要一点点操作。 使用Python pysvn库可以帮助一些这样的内部的保护你,并打开一些发烧友集成的大门。
例如让你开始:
import sys;
import urllib;
import svnlook;
#duckpunch to get access to the relative path for the revision
def relativePath(self):
return self.path
baseUrl = sys.argv[1]
repo = sys.argv[2]
revision = sys.argv[3]
l = svnlook.changed(repo, revision);
#TODO this assumes all enries in the commit are against one project, so the first item found is sufficient
#May want to iterate the entries and check for any different paths
out = l[0]
changePath = relativePath(out)
print changePath
#TODO if 'trunk' is found in changePath, trigger build
在bash这是可以做到这样:
REPOS="$1"
REV="$2"
TXN_NAME="$3"
SVN=/usr/bin/svn
SVNLOOK=/usr/bin/svnlook
export LANG=en_US.UTF-8
RES=$($SVNLOOK dirs-changed $REPOS -r $REV)
if [[ $RES == *"trunk"* ]]
then
Call whichever command you want to call when there are changes in trunk
fi