投稿日:2016-11-28
やりたいこと
svn の update 時に大量の更新があった場合に
以下のエラーで update
が止まってしまうことがある
The server sent a truncated HTTP response body.
その都度、cleanup
を実行して、再度 update
するのだがこれを自動化したい
windows 環境なので バッチでの実行を検討する
TortoiseSVN を使用しているのでコマンドラインツールのインストールが必要
環境
- Windows7 Home Premium
- Subversion 1.8.13
- TortoiseSVN 1.8.11
処理の概要
update
を実行、エラーになったらcleanup
して再度update
を実行
update
中にconflict
したらその部分はスキップ(後まわし)
ヘルプを見てやり方を調べる
svn help update
で update
コマンドで使えるオプションを確認する
バッチ処理
<SVNのローカルリポジトリパス>を設定
TortoiseSVN のパス C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
も異なる場合は修正する
@ECHO OFF
set SVN_DIR=<SVNのローカルリポジトリパス>
set TOR_DIR="C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe"
set /A CNT=0
:LOOP
REM (p) postpone 競合を後で解決
call svn update --accept p %SVN_DIR%
IF "%ERRORLEVEL%"=="0" GOTO END
call svn cleanup %SVN_DIR%
REM 無限ループを避ける為に繰り返しは10回を上限とする
IF CNT==10 GOTO END
SET /A CNT+=1
GOTO LOOP
:END
REM 最後に TortoiseSVN を表示する(ここで競合に関しては解決してもらう)
call %TOR_DIR% /command:update /path:%SVN_DIR%
最後に
お昼休みで作ったので動作的に怪しい部分が無いとはいえないです。
ご利用は計画的に。