コマンドラインから TortoiseSVN の作業コピーを更新する。

目的

リポジトリから最新モジュールを取得してデプロイする作業を自動化させるたに、TortoiseSVN を使ってバッチファイルで更新をかけたい。

環境

方法

TortoiseProc.exe を利用する。
以下は、更新画面を起動し、エラーが無ければ自動的にウィンドウを閉じるときの例。

C:\>TortoiseProc.exe /command:update /path:"C:\WorkCopy" /closeonend:1

参照

感想

コマンドオプションは豊富にあり、何でもできそうな感じ。
しかし、TortoiseProc.exe を起動すると、すぐにコマンドラインに制御が戻ってしまうため、未更新のモジュールをデプロイする状態になってしまった。

バッチ処理には、svn コマンド使ったほうがいい。

Subversion でのコミット時に「MERGE request failed on …」とエラーが発生する。

現象

TortoiseSVN から追加したドキュメントをコミットをすると、以下の現象が発生する。

  1. リポジトリへのドキュメントの追加が成功したメッセージが表示される。
  2. 続いて、以下のエラーメッセージが表示される。
    エラー: Commit failed (details follow):
    エラー: MERGE request failed on '/svn/SampleProject/LibraryProject'
    エラー: MERGE of '/svn/SampleProject/LibraryProject': 200 OK (http://SVNServer)
  3. Trac のリポジトリブラウザから見ると、ドキュメントの追加には成功している。しかし、ローカルのチェックアウトフォルダはコミット失敗の状態で、リポジトリとローカルのリビジョンの同期が取れていない。
  4. 以降のリポジトリ操作が、更新・コミットともに不可能になる。別フォルダへのチェックアウトは可能。

環境

原因

Trac Lightning 1.7.4 で、環境変数 TL_PROJECT_HOME が追加になっている。これに伴い、hook クリプト(post-commit.bat)が変更になっているが、旧バージョンで作成されたプロジェクト内のスクリプトは自動的に置き換えられていないため。

方法

  1. hook クリプトに独自の修正を加えていないならば、そのままプロジェクトの hooks フォルダにコピーする。
    cp \TracLight\bin\post-commit.bat \TracLight\projects\svn\SampleProject\hooks\
  2. hook クリプトに独自の修正を加えていれば、\TracLight\bin\post-commit.bat を参考にして修正する。