svn报“Previous operation has not finished; run 'cleanup' if it was interrupted”的错误
一、叙述
今天需要更新接口文檔,所以就update了一下,結果報了如下錯誤:
勾选了以后发现,等待它执行了很久,还是给了报错,依旧是文档拒绝访问。也许别人这样做就成功了呢,反正我是没成功。
下图为在网上找的旧版svn的cleanUp界面,
二、解决方案(二)——使用db管理工具sqlite3
我们错误的提示是:“Previous operation has not finished”,出现这个问题的说法是,Svn的operation是存放在本地.svn\wc.db数据库文件里面,即在内嵌数据库wc.db的work_queue表中的,而operation没有结束。所以我们需要使用sqlite来操作。
sqlite是一个常用的嵌入式数据库,就是一个db文件。
1、在网上下载下载db管理工具sqlite3
2、将sqlite3.exe放置到对应cleanup异常的svn项目下的.svn文件夹下,如下图:
需注意的是,.svn默认是隐藏的,我们需要勾选将其显示出来。
3、在.svn目录下打开cmd命令
4、输入输入sqlite3 wc.db
5、输入 .table 查看所有表:会看到WORK_QUEUE
6、删除WORK_QUEUE表:输入delete from work_queue;
(在这里需注意要加分号!因为现在输入的是sql语句,结尾要加;(分号)才算完整 ,否则就进入…>的状态)
7、可以查看是否删除成功:输入select * from work_queue;
(我第一遍删除后查看发现WORK_QUEUE依旧存在,所以就又执行了一次delete语句)
8、 最后在出现问题的目录下,鼠标右键找到clean up,去执行Cleanup命令,如下图。
9、clean up成功
补充:其他解决方案(三)
看到有人使用sqlite清空这种方法不起作用,给出了另一个解决方案。
将.svn文件删除,重新checkout工程下来。在这里可以保留当前已有的项目代码,说svn在checkout过程中检测到已有文件存在时不会再重新下载,下载速度会比较快一些。但是这样感觉还是不太好,万一checkout的文件出现问题,倒不如全部删除项目,完完全全的checkout一份下来。