1. 程式人生 > >svn 執行cleanup報錯

svn 執行cleanup報錯

svn執行update命令時報錯“Error:svn: E155004: There are unfinished work items in 'E:\projectCode\code\164\neweb\otcWeb'; run 'svn cleanup' first.”。

執行cleanup時候,提示要Error:Error performing cleanup for 'E:\projectCode\code\164\neweb\otcWeb': svn: E155004: Working copy 'E:\projectCode\code\164\neweb\otcWeb' locked
svn: E155004: 'E:\projectCode\code\164\neweb\otcWeb' is already locked.

svn: E155004: 'E:\projectCode\code\164\neweb\otcWeb' is already locked.。看來是進入死迴圈了。

可能是頻繁做了一些改名,檔案開啟的時候更新或者提交操作,導致svn罷工了。這個也該算是svnbug吧。類似的情況,其實之前也碰到過。之前都是圖省事,把整個svn checkout的主目錄都刪掉,重新checkout來解決的。但是隨著專案的深入開展,要更新的檔案越來越多。這個問題遲早要解決的,試試看吧。問題的關鍵看來需要找到死鎖的地方,解鎖才行。網上查了下資料。Svnoperation是存放在“work queue’“裡的。而“work queue’

是在內嵌資料庫wc.dbwork_queue表中的。看看work_queue表中放了些什麼,再做處理。

1.    內嵌資料庫一般是用sqlite進行輕量級管理的。官網下載 sqlite3.exe: https://www.sqlite.org/download.html 選擇 windows系統選擇 sqlite-tools-win32-x86-3240000.zip(當前最新版本解壓裡面有三個檔案,我們只需要sqlite3.exe)。

不想去官網下載的小夥伴,可以在這裡下載 https://download.csdn.net/download/qq_36356218/10473733

2.    為了方便命令列執行,將

sqlite3.exe放到svn 專案的主目錄下,和.svn目錄同級下。

3.    執行  sqlite3 .svn/wc.db "select * from work_queue".看到有1條記錄。就是剛才我執行的一些操作。

    1|(file-install src/main/resources/web/resources2/g3070/js/g3070Index.js 1 0 1 1)

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

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

6.    然後再試一下 clean up,結果成功了