今天在svn提交的时候它卡顿了一下,我以为已经提交完了,就按了一下,结果就再也恢复不了,也继续不了了...
报错
cleanup failed–previous operation has not finished; run cleanup if it was interrupted
试过执行cleanup,结果也是失败,要更新先要cleanup,但是cleanup的失败信息又叫我cleanup……这是一个死循环!
感觉这是一个设计上的缺陷:使用工作队列来保存数据,后一个操作依赖于前一个操作的结果,一旦失败就要使用cleanup操作。但是,当cleanup操作失败的时候这个机制就陷入了死循环。
解决办法就从它的数据库中直接删除工作队列中的数据,注意是sqlite数据库。
1.下载sqlite3.exe 如果是mac系统 跳过这一步
2.找到项目的.svn结尾的文件.(这个文件是被隐藏的,一般就是在整个svn的项目根目录).可以看到里面有wc.db这样一个文件.
3.把下载好的sqlite3放到.svn同级目录处.
4.打开cmd,到.svn所在的这个路径,然后执行sqlite3 .svn/wc.db "select * from work_queue"
5.执行完以后可以看到cmd窗口里会有一条条的记录.这些就是svn执行了一半的队列.
6.继续执行sqlite3 .svn/wc.db "delete from work_queue"
7.再执行一次sqlite3 .svn/wc.db "select * from work_queue",看下是否还能检索出队列,如果没有出现任何记录,那表示已经删除成功了.
8.回到svn里出错的文件夹,右键,执行clean up命令,就可以进行clean up了.