執行 SVN 操作時彈出 Previous operation has not finished; run 'cleanup' if it was interrupted,且執行 Cleanup 仍報 already locked,是典型的工作佇列殘留導致。以下為親測有效的修復步驟。
SVN 客戶端在 .svn/wc.db(SQLite 資料庫)的 work_queue 表中記錄待執行操作。若上次操作中斷(強制關閉 IDE、殺進程、網路斷開),佇列殘留導致後續操作誤判為「未完成」。
sqlite3.exe:官網 SQLite Tools 下載對應平台的命令列工具,解壓備用。.svn/wc.db:在專案根目錄下的 .svn 資料夾確認存在 wc.db。sqlite3.exe 放入專案根目錄(與 .svn 同級)。sqlite3 .svn/wc.db "select * from work_queue"
若顯示記錄,說明確有殘留任務。
sqlite3 .svn/wc.db "delete from work_queue"
out of date:說明本地與倉庫有衝突,執行 Update 並解決衝突(編輯衝突檔 → Resolved)。.svn 重新 Checkout ❌:會丟失未提交的修改,僅作為最後手段。Break locks 選項 ❌:殘留鎖定是導致 already locked 的主因。svn cleanup 維護工作副本健康。svn update 減少衝突機率。掌握 wc.db 結構與 work_queue 機制,能從根源快速解決 SVN 鎖定問題,避免重新 Checkout 的時間成本。