SVN后执行批处理脚本行为与正常执行不同

时间:2013-07-09 16:33:47

标签: svn batch-file post-commit

需要svn post-commit批处理脚本的帮助。我在这里:

-commit.bat后:

1. @ECHO OFF
2. cd D:\Subversion\...\hooks
3. SET OUTPUT = default
4. FOR /F "tokens=*" %%a in ('revision.bat') do ( SET OUTPUT=%%a )
5. findstr /m "Autobuild" D:\Subversion\...\db\revprops\0\%OUTPUT%
6. if %errorlevel%==0 (
7.   call website.bat
8. )

website.bat:

D:\Subversion\...\hooks\wget http://website.com/service-trigger

revision.bat:

svnlook youngest D:\Subversion\...

所以,这里发生的是

  1. 提交到存储库后,脚本会提取最后revision个数字

  2. 使用该号码在修订日志中查找文件

  3. 尝试在该日志中找到特定字符串

  4. 如果特定字符串存在,请触发一些网址

  5. 我的问题是这个脚本是在直接从cmd调用时执行的,但是当SVN调用它时,似乎在第5行中发生了一些奇怪的事情,因为我没有收到任何错误,但是从不调用第7行。 / p>

    我怀疑也许我应该以管理员身份运行脚本,但由于我从未认真为Windows编程,我不确定,我需要一些帮助

1 个答案:

答案 0 :(得分:1)

SET语句中的空格很重要。在第3行中,您要设置变量"output "而不是"output"

删除第3行=周围和第4行%%a之后的空格(但仅限于此处的化妆品。)

另外 - 不清楚...是(省略)还是(父母)。如果绝对文件名包含空格"quote it"

也可能是每个调用的起始目录都不同。第2行的cd更改D:驱动器上的当前目录,但不会影响默认驱动器。您需要执行D:将默认设置切换为驱动器D:。第4行的revision.bat相对于默认值。