0

svn post-commit在批处理脚本方面需要一点帮助。这是我所拥有的:

post-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. )

网站.bat:

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

修订版.bat:

svnlook youngest D:\Subversion\...

所以,这里发生的事情是

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

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

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

  4. 如果特定字符串存在,则触发一些 URL

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

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

4

1 回答 1

1

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

删除第 3 行周围=和第 4 行之后的空格%%a(但此处仅用于装饰。)

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

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

于 2013-07-09T16:39:16.630 回答