svn「Previous operation has not finished; run 'cleanup' if it was interrupted

今天碰到了個鬱悶的問題,svn執行clean up命令時報錯「Previous operation has not finished; run 'cleanup' if it was interrupted」。不管你到那個父層次的目錄執行「clean up 「,都是報同樣的錯。執行cleanup時候,提示要cleanup。看來是進入死循環了。sql

多是頻繁作了一些更名,文件打開的時候更新或者提交操做,致使svn罷工了。這個也該算是svn的bug吧。相似的狀況,其實以前也碰到過。以前都是圖省事,把整個svn checkout的主目錄都刪掉,從新checkout來解決的。可是隨着項目的深刻開展,要更新的文件愈來愈多。這個問題早晚要解決的,試試看吧。問題的關鍵看來須要找到死鎖的地方,解鎖才行。網上查了下資料。Svn的operation是存放在「work queue’「裏的。而「work queue’是在內嵌數據庫wc.db的work_queue表中的。看看work_queue表中放了些什麼,再作處理。shell

1.    內嵌數據庫通常是用sqlite進行輕量級管理的。sqlite-shell-win32-x86-3081101.zip數據庫

2.    爲了方便命令行執行,將sqlite3.exe放到svn 項目的主目錄下,和.svn目錄同級下。svn

3.    執行  sqlite3 .svn/wc.db "select * from work_queue".看到有4條記錄。就是剛纔我執行的一些操做。命令行

226539|(sync-file-flags 93目錄名 文件名)sqlite

226540|(file-remove 21 .svn/tmp/svn-7B43C232)隊列

226541|(sync-file-flags 目錄名 文件名)ip

226542|(file-remove 21 .svn/tmp/svn-7B48224E)rem

4.    執行  sqlite3 .svn/wc.db "delete from work_queue". 把隊列清空。get

5.    執行 sqlite3 .svn/wc.db "select * from work_queue". 確認一下是否已經清空隊列,發現已經沒有記錄顯示,說明已經清空了。

6.    最後再試一下,看是否能夠  clean up了。果真成功了。

相關文章
相關標籤/搜索