コミット時にトリガーされる svn フックを作成しました。目標は、それぞれで svn update を実行して、複数のサーバーを自動的に更新することです。
したがって、私のサーバートポロジは(すべてWindows 2012で実行されています)で構成されています:
a)SVN_server
b)server1、...、N
PsExec を使用して、SVN_server から server1,...,N への svn update を呼び出します
更新されたディレクトリは Web サーバー (IIS) によって使用されるため、svn の更新時に一部のファイルが使用されている可能性があるため、時々失敗することが予想されます。
ただし、断続的に svn の更新がハングします。ProcessExplorer で調べると、psExec が svn update を実行し、それが「conhost」という名前で子プロセスを実行していることがわかります。これはインタラクティブなプロンプトだと思いますが、さらに調査するために標準出力をファイルにリダイレクトする方法がありません。
参考までに、(リポジトリ mysite の) post-commit.bat フックは次のようになります。
:: 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
- リモート svn 更新で stdout/stdin をリダイレクトするにはどうすればよいですか?
- ブロックされた svn update プロセスを強制終了すると、svn ディレクトリがダーティになります。回復するにはsvn cleanupを使用する必要があります。なぜこれが起こっているのか、どうすれば解決できますか?