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了。果真成功了。

相关文章
相关标签/搜索