关于'SVN 清理'has encountered a problem.

关于'SVN 清理'has encountered a problem.

关于’SVN 清理’has encountered a problem. 即如何解决SVN冲突后无法更新,清除等操作。

作为一个前端交互设计,要使用Eclipse进行开发也是相当无奈的举措,果不其然,今天又被这磨人的小妖精坑了一把。

关于’SVN 清理’的记录

产生场景

原本完成了一个功能的开发,正要把相关的代码和资源提交到SVN时,发现目前提交的代码和远程SVN资源库存在冲突,通过compare操作以后,发现只是版本过期,即可以直接用远程的资源替代即可。

异常提示

错误提示

svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted

如上述代码所示,我原先的操作还没完成,应进行cleanup操作。

网上解决方式

通过度娘一番,都是说只需要在项目下选择team—> Refresh/Cleanup即可

然而尝试了一轮以后,发现并没有什么卵用,仅仅还是继续提示刚才那个提示。

错误提示

可行解决方式

1.下载sqlite工具,这里提供SQLite3.exe
云盘下载

2.下载完成后,你需要找到自己项目下的.svn文件,这里可以通过系统自带的搜索,可以快速地定位到文件路径;

3.查看当前路径是否存在wc.db文件;

4.将刚才下载的sqlite3.exe放到了.svn的同级目录下;

5.通过启动本地的git-bash或用系统自带的cmd进入到当前目录,执行

sqlite3 .svn/wc.db "select * from work_queue"

6.完成后,会发现你刚才产生冲突和造成问题的一些操作记录,如下图

错误条目

7.这时候,我们需要执行数据库的删除操作,执行

sqlite3 .svn/w3.db "select * from work_queue"

删除条目

8.此时,我们若再查询下 work_queue下的条目,会发现已经没有了,这个时候,我们的update和cleanup操作就会有效。

总结

虽然看似简单的一个SVN资源池的操作,其实它的实施是通过SQLite对自身的wc.db库进行curd,而我们产生这个问题的原因就是因为,上条操作没完成后,立马对下条操作进行写入;或多条记录的操作次序的不当而产生的 work_queue中的死锁问题,因此我们可以引入SQLite工具,对.svn下的SVN操作数据db库进行删除,这样才可以真正的解决’SVN 清理’的问题。