今天碰到了個(gè)郁悶的問(wèn)題,svn執(zhí)行clean up命令時(shí)報(bào)錯(cuò)“Previous operation has not finished; run 'cleanup' if it was interrupted”喜喂。無(wú)論你到那個(gè)父層次的目錄執(zhí)行“clean up “忱屑,都是報(bào)一樣的錯(cuò)锚国。執(zhí)行cleanup時(shí)候嗦随,提示要cleanup陡叠「乓常看來(lái)是進(jìn)入死循環(huán)了籽御。
可能是頻繁做了一些改名,文件打開的時(shí)候更新或者提交操作惰匙,導(dǎo)致svn罷工了技掏。這個(gè)也該算是svn的bug吧。類似的情況项鬼,其實(shí)之前也碰到過(guò)哑梳。之前都是圖省事,把整個(gè)svn checkout的主目錄都刪掉绘盟,重新checkout來(lái)解決的鸠真。但是隨著項(xiàng)目的深入開展,要更新的文件越來(lái)越多龄毡。這個(gè)問(wèn)題遲早要解決的弧哎,試試看吧。問(wèn)題的關(guān)鍵看來(lái)需要找到死鎖的地方稚虎,解鎖才行撤嫩。網(wǎng)上查了下資料。Svn的operation是存放在“work queue’“里的蠢终。而“work queue’是在內(nèi)嵌數(shù)據(jù)庫(kù)wc.db的work_queue表中的序攘。看看work_queue表中放了些什么寻拂,再做處理程奠。
內(nèi)嵌數(shù)據(jù)庫(kù)一般是用sqlite進(jìn)行輕量級(jí)管理的。sqlite-shell-win32-x86-3081101.zip
為了方便命令行執(zhí)行祭钉,將sqlite3.exe放到svn 項(xiàng)目的主目錄下瞄沙,和.svn目錄同級(jí)下。
-
執(zhí)行 sqlite3 .svn/wc.db "select * from work_queue".看到有4條記錄慌核。就是剛才我執(zhí)行的一些操作距境。
226539|(sync-file-flags 93目錄名 文件名)
226540|(file-remove 21 .svn/tmp/svn-7B43C232)
226541|(sync-file-flags 目錄名 文件名)
226542|(file-remove 21 .svn/tmp/svn-7B48224E)
執(zhí)行 sqlite3 .svn/wc.db "delete from work_queue". 把隊(duì)列清空。
執(zhí)行 sqlite3 .svn/wc.db "select * from work_queue". 確認(rèn)一下是否已經(jīng)清空隊(duì)列垮卓,發(fā)現(xiàn)已經(jīng)沒有記錄顯示垫桂,說(shuō)明已經(jīng)清空了。
最后再試一下粟按,看是否可以 clean up了诬滩。果然成功了霹粥。
如果你是Mac電腦,你就看這里吧疼鸟!
- 第一步找到你的wc.db文件
使用數(shù)據(jù)庫(kù)軟件打開wc.db后控。
找到字段work_queue數(shù)據(jù)表,可以看到你之前的下載操作記錄空镜。
清楚該記錄浩淘,你可能刪除不了,因?yàn)槲募侵蛔x的姑裂,修改文件權(quán)限的命令:chmod 755 wc.db馋袜。
現(xiàn)在可以放心的刪除了男旗,這樣操作就完成了舶斧,你可以重新進(jìn)入管理svn的工具打開目錄,進(jìn)行clean了察皇,問(wèn)題解決了茴厉,是不是很方便呢?