SVN 报错“Previous operation has not finished; run 'cleanup' if it was interrupted” 原因及解决方案
今天遇到的问题 svn无论是执行checkout,commit,update的时候提示需要cleap up,但 svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”。无论你到那个父层次的目录执行“clean up “,都是报一样的错。执行其他命令的时候,提示要cleanup。看来是进入死循环了。
可能是频繁做了一些改名,文件打开的时候更新或者提交操作,导致svn罢工了。这个也该算是svn的bug吧。类似的情况,其实之前也碰到过。之前都是图省事,把整个svn checkout的主目录都删掉,重新checkout来解决的。但是随着项目的深入开展,要更新的文件越来越多。这个问题迟早要解决的,试试看吧。问题的关键看来需要找到死锁的地方,解锁才行。网上查了下资料。Svn的operation是存放在“work queue’“里的。而“work queue’是在内嵌数据库wc.db的work_queue表中的。看看work_queue表中放了些什么,再做处理。
解决方法:清空svn的队列
1. 内嵌数据库一般是用sqlite进行轻量级管理的。(https://www.sqlite.org/index.html 传送门 ps:下载这一款 sqlite-shell-win32-x86: sqlite3.exe,window下二进制的)
2. 找到你项目的.svn文件,查看是否存在wc.db
3. 为了方便命令行执行,将sqlite3.exe放到svn 项目的主目录下,和.svn目录同级下。
找到本地存放svn项目的目录,将sqlite3.exe复制到该项目根目录下(与.svn目录同级)
可能.svn在项目中这个文件被隐藏了,直接复制进svn项目即可。
4. 启动cmd执行sqlite3 .svn/wc.db "select * from work_queue" 可能会看到很多记录
5. 执行 sqlite3 .svn/wc.db "delete from work_queue". 把队列清空。
6. 执行 sqlite3 .svn/wc.db "select * from work_queue". 确认一下是否已经清空队列,发现已经没有记录显示,说明已经清空了。
7. 最后再试一下,看是否可以 clean up了。果然成功了。
其实导致这个原因主要是cvn内部的队列算是一个bug吧。
作者: Felix-Zhang
出处:https://www.cnblogs.com/zhangxiaoxia/p/9207630.html
版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探