我编写了一个在提交时触发的svn钩子。目标是自动 通过在每个服务器上运行svn update来更新多个服务器。
所以我的服务器拓扑由(所有在Windows 2012下运行)组成:
a)SVN_server
b)server1,...,N
我使用PsExec从SVN_server调用svn更新到server1,...,N
由于Web服务器(IIS)使用了更新的目录,因此可能会有一些文件 在svn更新时使用,所以我希望它偶尔会失败。
但是,间歇性的svn更新会挂起!在使用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