1

我写了一个在提交时触发的 svn 钩子。目标是通过在每个服务器上运行 svn update 来自动更新多个服务器。

所以我的服务器拓扑包括(全部在 Windows 2012 下运行):
a)SVN_server
b)server1,...,N

我使用 PsExec 调用 svn update 从 SVN_server 到 server1,...,N

由于 Web 服务器 (IIS) 使用更新后的目录,因此某些文件可能在 svn 更新时正在使用,所以我希望它偶尔会失败。

但是会发生什么,svn update 会间歇性地挂起!使用 ProcessExplorer 检查时,我看到 psExec 运行 svn update,而后者又运行一个名为“conhost”的子进程。我认为这将是一些交互式提示,但我无法将标准输出重定向到文件以便进一步调查。

仅供参考,post-commit.bat 钩子(在存储库 mysite 上)看起来像:

:: first update SVN_server working folder
svn update d:\websites\mysite

:: then update server1,..,N
cmd /c c:\tools\PsExec.exe -i -u Admin -p Passw \\swWeb01 -h  c:\tools\svn update d:\websites\mysite

cmd /c c:\tools\PsExec.exe -i -u Admin -p Passw \\swWeb02 -h  c:\tools\svn update d:\websites\mysite
  1. 如何在远程 svn 更新中重定向标准输出/标准输入?
  2. 杀死阻塞的 svn 更新进程后,svn 目录变脏。我必须使用 svn cleanup 来恢复。任何想法为什么会发生这种情况,我该如何解决?
4

0 回答 0