2017-10-06 75 views
0

所以我有一个post-commit挂钩触发了我们的Jenkins服务器上的构建。一切正常,除非我尝试通过SVN回购中的更改文件进行循环。问题是提交实际挂起,如果我注释掉循环,更改文件被记录在哪里,则提交成功完成。批处理脚本通过SVN更改文件循环

我使用SVN diff命令,这似乎是我想要的,将当前修订版本与HEAD修订版本进行比较。它在硬编码值的命令行上工作,但不会在我的循环中使用从SVN本身填充的%1%和%2%。

到目前为止我的代码:

@echo off 
setlocal enabledelayedexpansion 

SET REPOS=%1% 
SET TXN=%2% 

for /f "tokens=*" %%a in ('svnlook author -r !TXN! !REPOS!') do set AUTH_NAME=%%a 
SET EMAILS="!AUTH_NAME!"@gmail.com 

SET /a OLDTXN=!TXN! - 1 

for /f "tokens=*" %%a in ('svn diff --summarize -r !OLDTXN!:!TXN! <repo URL>') do (
    set FILES=%%a 
    rem python D:\csvn\data\repositories\Test\hooks\compile_file.py !FILES! 
) 

其中“回购网址”是SVN根回购在我硬编码,这是罚款。 现在,例如,如果我注释掉SET TXN线,并用硬编码的数值,如更换:

SET TXN=518 

的循环工作和我得到的是已经改变了正确的文件所需的电子邮件,因此它必须围绕TXN如何从SVN传递到批处理脚本。它可能不像我想的那样充满。

python脚本已被注释掉,只是接受文件作为命令行参数并将其发送给DL。这同样适用于上面硬编码的TXN值。显然,我的循环阻止了成功完成提交,但不知道我做错了什么。但是我非常肯定它与上面提到的原因有关的TXN变量。

我的问题的任何帮助,将不胜感激:)

编辑*改变变量从%%到!因为我正在使用enabledelayedexpansion *

回答

0

现在已解决 - 如果有人正在考虑此事以备将来参考,则问题是递减SVN传入的TXN变量。要获取自上次提交以来发生的更改,我使用了不同的SVN命令,而不是diff命令。