LoginSignup
6
11

More than 5 years have passed since last update.

svn の update をバッチで処理する

Posted at

投稿日: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 updateupdate コマンドで使えるオプションを確認する

バッチ処理

<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%

最後に

お昼休みで作ったので動作的に怪しい部分が無いとはいえないです。
ご利用は計画的に。

参考リンク

TortoiseSVNのコマンド

【svn】基本コマンド

個人的によく使う svn コマンドの使い方まとめ

バッチファイルでTortoiseSVNのupdateを行う

Windowsバッチファイル制御構文

6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11