所以我有一个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 *