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

时间:2009-04-02 18:05:43

标签: 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 个答案:

答案 0 :(得分:3)

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

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

记录失败并在导出失败时停止批处理。 ||基本上告诉||之后的命令仅在前面的命令失败时执行(errorlevel> 0)。 goto :eof退出批处理文件(或子程序),或者您也可以使用exit /b

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

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

或类似的东西。

在您要保护的每个命令之后,另一个更详细的方法是if阻止:

if errorlevel 1 (
  echo Stuff > log.txt
)

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

答案 1 :(得分:1)

Ant(需要Java)可能是这类工作的一个很好的候选者。

Ant是一种构建工具,强大支持您描述的那种依赖链。语法也相当简单,因为它只是XML。