svn報錯:[Previous operation has not finished; run 'cleanup' if it was interrupted] 的排錯過程

今天在打開某一文檔的狀況下,使用SVN更新文檔,在更新的過程當中報錯,提示須要執行clean up,果斷右鍵執行clean up,又提示一個新的錯誤:"Previous operation has not finished; run 'cleanup' if it was interrupted",此後又嘗試了該項目目錄樹不一樣目錄進行更新或者提交,甚至把該項目刪除從新check out,都會出現一樣的問題;html

       這個時候查閱了一下資料得知:本地的SVN客戶端中有一個嵌入式DB(裏面大約有10多個表)SQLite,來保存SVN中管理的文件類型,項目結構樹,用戶操做進度等,因此咱們能夠大膽假設下,上述咱們提交代碼過程當中,SVN客戶端用戶代碼提交操做非正常的終止,致使sqlite中某個表中用來記錄用戶對項目A的操做(增刪改等)的數據來不及更改,因爲咱們後續的全部針對項目A的操做,都優先從該表中檢查項目A是否有未完成的操做,若是存在未完成操做就會提示"Previous operation has not finished",順着這個思路,若是咱們找到這個表,且把這個表中相關記錄刪除,是否是就能夠解決這個問題,經過查閱相關資料發現:sql

在使用了svn的項目中,在項目根目錄會有一個.svn文件夾,點擊進入後結構以下:數據庫

 

 

 

 

 

 

就是箭頭指向的這個文件,它就是SQLite數據庫文件,咱們能夠用SQLite3.exe打開它,下面開始解決上述問題:svn

一、首先咱們去https://www.sqlite.org/download.html 頁面下,找到下載解壓縮後,獲得以下這麼個目錄,裏面有個sqlite3.exe,咱們就可使用命令行的方式打開這個文件;工具

 

 

二、將sqlite3.exe複製到項目根目錄中,通wc.db文件同目錄,以下:命令行

 

 

 

三、經過命令行切換到項目根目錄,並彩種sqlite3 wc.db命令查看wc.db文件內容,.table命令查看wc.db中全部的表,其中WORK_QUEUE表就是用來記錄用戶操做以下:sqlite

 

 

 

命令解釋:htm

sqlite3 wc.db:表示採用sqlite3工具打開wc.db文件,就像你使用microsoft office打開word文檔同樣blog

.table:能夠認爲wc.db是一個數據庫文件,這個文件的自己就是一個微型數據庫,.table命令表示查看這個微型數據庫中的全部table文檔

四、既然是表,那麼咱們能夠採用sql執行增刪改查就能夠,在此處執行DELETE FROM WORD_QUEUE;命令執行刪除;

 

 

 

五、4處操做完畢後,選中項目,執行svn的clean up操做,而後SVN項目能夠正常使用了;

 注:若是此時clean up仍然報錯:

(1)咱們能夠輸入如下命令,查看阻塞表內容:select * from work_queue;

(2)查看lock表內容:select * from wc_lock;

(3)輸入命令 delete from work_queue;

(4)輸入命令 delete from wc_lock;

 

 

而後從新啓動項目,再次clean up;問題解決!

相關文章
相關標籤/搜索