循环遍历 SVN 更改文件的批处理脚本
Batch Script to Loop through SVN changed files
所以我有一个 post-commit 挂钩,它会在我们的 Jenkins 服务器上触发构建。一切正常,除非我尝试循环遍历 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!
)
其中 "repo URL" 是我在 SVN 中硬编码的根存储库,这很好。
现在,例如,如果我注释掉 SET TXN 行并将其替换为硬编码数值,例如:
SET TXN=518
循环有效,我收到了所需的电子邮件,其中包含已更改的正确文件,因此它一定与 TXN 如何从 SVN 传递到批处理脚本有关。它可能不像我想的那样填充。
python 脚本被注释掉,只接受该文件作为命令行参数并将其通过电子邮件发送到 DL。这同样适用于如上所述的硬编码 TXN 值。显然我的循环阻止提交成功完成但不确定我做错了什么。但由于上述原因,我很确定它与 TXN 变量有关。
非常感谢对我的问题的任何帮助:)
编辑 * 将变量从 %% 更改为 !!因为我正在使用 enabledelayedexpansion *
此问题现已解决 - 如果有人正在查看此内容以供将来参考,问题是递减 SVN 传入的 TXN 变量。为了获取自上次提交以来的更改,我使用了不同的 SVN 命令,而不是diff 命令。
所以我有一个 post-commit 挂钩,它会在我们的 Jenkins 服务器上触发构建。一切正常,除非我尝试循环遍历 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!
)
其中 "repo URL" 是我在 SVN 中硬编码的根存储库,这很好。 现在,例如,如果我注释掉 SET TXN 行并将其替换为硬编码数值,例如:
SET TXN=518
循环有效,我收到了所需的电子邮件,其中包含已更改的正确文件,因此它一定与 TXN 如何从 SVN 传递到批处理脚本有关。它可能不像我想的那样填充。
python 脚本被注释掉,只接受该文件作为命令行参数并将其通过电子邮件发送到 DL。这同样适用于如上所述的硬编码 TXN 值。显然我的循环阻止提交成功完成但不确定我做错了什么。但由于上述原因,我很确定它与 TXN 变量有关。
非常感谢对我的问题的任何帮助:)
编辑 * 将变量从 %% 更改为 !!因为我正在使用 enabledelayedexpansion *
此问题现已解决 - 如果有人正在查看此内容以供将来参考,问题是递减 SVN 传入的 TXN 变量。为了获取自上次提交以来的更改,我使用了不同的 SVN 命令,而不是diff 命令。