svn - 强大的 SVN 导出和复制脚本?

标签 svn batch-file

我正在寻找运行夜间脚本的最佳方法,该脚本导出一组 文件从 SVN 存储库复制到本地目录。当导出完成后, 将本地目录的内容复制到多个远程服务器。

这将是在 Windows Server 2003 计算机上运行的计划后台作业。 远程服务器都在网络上,所以不需要FTP等。

伪代码会像这样运行

1. svn export repo localdir (plus some switches)
2. ... wait to make sure export is finished ...
3. robocopy localdir \\remotedir1
4. robocopy localdir \\remotedir2, etc

我对编写批处理作业非常陌生,但我希望它尽可能强大: - 导出完成后才开始复制 - 如果复制到remotedir1失败,脚本仍继续复制到remotedir2、3等 - 如果其中一个步骤出现任何问题,是否可以记录问题?

任何有关批处理作业的输入将不胜感激!

最佳答案

您可能不需要等待步骤 2,因为导出时 SVN 会阻塞。除此之外它看起来不错。您可以使用

svn export ... || (echo SVN export failed > log.txt & goto :eof)

记录失败并在导出失败时停止批处理。 || 基本上告诉我们,只有当前面的命令失败(错误级别 > 0)时,才会执行 || 之后的命令。 goto :eof 退出批处理文件(或子例程),或者您可以使用 exit/b 来执行此操作。

您也可以将此链接应用于 robocopy 命令:

robocopy ... || echo Copy to remotedir1 failed > log.txt

或者类似的东西。

另一种更详细的方法是在您想要保护的每个命令后面添加一个 if block :

if errorlevel 1 (
  echo Stuff > log.txt
)

不过,所有这些方法都需要工具的正确退出代码。

关于svn - 强大的 SVN 导出和复制脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/710899/

相关文章:

batch-file - 删除/F 末尾的空格

svn - 使用 Release 插件时禁用 Hudson 中的证书检查

windows - 使用批处理将多个文件的内容重新混合到 .mkv

batch-file - 将文本发送到Windows控制台应用程序的标准输入

java - 从 subversion repo 中排除哪些 eclipse 文件

powershell - 在 Windows powershell 中将日期添加到重定向文件名

Windows BAT 或 CMD : send some data to a localhost udp port

SVN 两因素认证

svn - TortoiseSVN切换分支-一些文件保留在前一个分支上

SVN:每个开发人员的个人分支?