svn报错:[Previous operation has not finished; run 'cleanup' if it was interrupted] 的排错过程

旧城冷巷雨未停 提交于 2019-12-02 18:46:50

今天在打开某一文档的情况下,使用SVN更新文档,在更新的过程中报错,提示需要执行clean up,果断右键执行clean up,又提示一个新的错误:"Previous operation has not finished; run 'cleanup' if it was interrupted",此后又尝试了该项目目录树不同目录进行更新或者提交,甚至把该项目删除重新check out,都会出现同样的问题;

       这个时候查阅了一下资料得知:本地的SVN客户端中有一个嵌入式DB(里面大约有10多个表)SQLite,来保存SVN中管理的文件类型,项目结构树,用户操作进度等,所以我们可以大胆假设下,上述我们提交代码过程中,SVN客户端用户代码提交操作非正常的终止,导致sqlite中某个表中用来记录用户对项目A的操作(增删改等)的数据来不及更改,由于我们后续的所有针对项目A的操作,都优先从该表中检查项目A是否有未完成的操作,如果存在未完成操作就会提示"Previous operation has not finished",顺着这个思路,如果我们找到这个表,且把这个表中相关记录删除,是不是就可以解决这个问题,通过查阅相关资料发现:

在使用了svn的项目中,在项目根目录会有一个.svn文件夹,点击进入后结构如下:

 

 

 

 

 

 

就是箭头指向的这个文件,它就是SQLite数据库文件,我们可以用SQLite3.exe打开它,下面开始解决上述问题:

1、首先我们去https://www.sqlite.org/download.html 页面下,找到下载解压缩后,得到如下这么个目录,里面有个sqlite3.exe,我们就可以使用命令行的方式打开这个文件;

 

 

2、将sqlite3.exe复制到项目根目录中,通wc.db文件同目录,如下:

 

 

 

3、通过命令行切换到项目根目录,并彩种sqlite3 wc.db命令查看wc.db文件内容,.table命令查看wc.db中所有的表,其中WORK_QUEUE表就是用来记录用户操作如下:

 

 

 

命令解释:

sqlite3 wc.db:表示采用sqlite3工具打开wc.db文件,就像你使用microsoft office打开word文档一样

.table:可以认为wc.db是一个数据库文件,这个文件的本身就是一个微型数据库,.table命令表示查看这个微型数据库中的所有table

4、既然是表,那么我们可以采用sql执行增删改查就可以,在此处执行DELETE FROM WORD_QUEUE;命令执行删除;

 

 

 

5、4处操作完毕后,选中项目,执行svn的clean up操作,然后SVN项目可以正常使用了;

 注:如果此时clean up仍然报错:

(1)我们可以输入以下命令,查看阻塞表内容:select * from work_queue;

(2)查看lock表内容:select * from wc_lock;

(3)输入命令 delete from work_queue;

(4)输入命令 delete from wc_lock;

 

 

然后重新启动项目,再次clean up;问题解决!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!