Open1

TortoiseSVNでcommitに失敗してcleanupもできないときの対処法

モチノエ研究所モチノエ研究所

あるプロジェクトのソース管理でTortoiseSVNを使用しているのですが、コミットが失敗しクリーンアップも動作しないという場面に出会いました。
調べてみると、どうやら作業コピーのロック状態が残ってしまうのが原因だと判明しました。
データベースの値を直接書き換えてロックを外すことで対応します。


修正方法
SVNのメタデータである.svn/wc.dbを直接編集します。
こちらはsqlite形式で書かれているので、sqliteを使用します。

  1. sqlite3をダウンロードし、.svn/wc.dbの場所に移す。
  2. コンソールを起動し、該当箇所に移動します。
  3. sqlite3 wc.db .tablesを実行します。 WC_LOCK、WORK_QUEUEが表示されることを確認します。
  4. sqlite3 wc.db --header "select * from WORK_QUEUE"
  5. sqlite3 wc.db --header "select * from WC_LOCK"
  6. 何かしらのデータが残ったままだった場合、テーブルごと消します。
  7. sqlite3 wc.db "delete from WORK_QUEUE"
  8. sqlite3 wc.db "delete from WC_LOCK"