【发布时间】:2009-07-23 21:12:29
【问题描述】:
我有一个批处理文件,我从带有 Service Pack 3 的 Windows XP 工作站运行,它使用 SQL 2005 中的 sqlcmd.exe 将 SQL 更改应用于数据库。
我有一个 TortoiseSVN 的命令行条目,可以像这样自动更新我的存储库的本地副本:
tortoiseproc /command:update /path:"C:/SVN/My Code/Dev/2009.07.23" /closeonend:3
根据the documentation,如果在更新过程中出现任何错误、冲突或合并,/closeonend:3 选项将使 TortoiseSVN 对话框保持打开状态。
如果确实发生了这种情况,并且用户在没有解决问题的情况下关闭了对话框,他们可能会忽略我们希望应用于给定分支的测试数据库的更改。
当 TortoiseSVN 对话框因更新后出现错误、冲突或合并而关闭时,ERRORLEVEL 是否会设置为某个 非零 值,从而启用我绕过批处理文件的其余部分?或者它是否会高兴地返回 0 以表明它已成功完成工作,即使代码不太正确?
【问题讨论】:
-
我实际上只是测试一下。在本地创建一个虚拟存储库,C:\Temp\Svn 或其他东西,将其签出到两个目录,将文件添加到其中一个并提交,然后更新另一个,更改两个文件中的文件,提交一个,然后运行你的批处理文件,看看会发生什么。
-
你为什么不用
svn.exe?我错过了什么吗? -
这是我的第一个想法,但我宁愿尝试使用 Tortoise 的可执行文件来完成这一切,而不必持续维护 Tortoise 和 SVN;谁知道一个人是否在某个时候做出了一些改变,从而以某种微妙或痛苦的方式破坏了另一个人的功能。
-
Lasse,按照您的描述进行测试后,返回的 ERRORLEVEL 始终为 0(这是 TortoiseSVN 版本 1.6.3,Build 16613),所以我想我会在运行批处理之前手动更新并确保没有错误、冲突或合并仍未解决,除非有人知道解决此问题的方法。我想我可能会构建自己的包装器 EXE,它可以查看 Tortoise 的实际结果窗口对话框,如果它在文本中找到其中一种情况(使用 Windows 消息传递来挂钩并拦截输出),就放弃。
标签: tsql tortoisesvn batch-file errorlevel