Previous operation has not finished; run 'cleanup' if it was interrupted---SVN报错

本文介绍了解决SVN在进行cleanup操作时遇到的死循环问题的方法。通过直接操作SQLite数据库中的work_queue表,删除导致问题的条目,从而避免了因前一操作未完成而反复提示cleanup的情况。

转自:http://blog.51cto.com/flyingcat2013/1580692

今天在更新项目的时候遇到一个问题,按惯例要cleanup才能重新更新。但是很不幸,在cleanup的时候又遇到了问题!

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

要更新先要cleanup,但是cleanup的失败信息又叫我cleanup……这是一个死循环!本着“内事不决问百度,外事不决问Google”的原则,终于找到一个解决办法

参见这里:http://www.anujvarma.com/svn-cleanup-failedprevious-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

Usually, an svn cleanup fixes most issues with tortoise svn. However, I ran into an issue which caused me some grief.
The specific error I was seeing:
Previous operation has not finished; run 'cleanup' if it was interrupted

Solution:

 Somehow, svn is stuck on the previous operation. We need to remove this operation from it’s ‘work queue’.
The data is stored in the wc.db sqllite database in the offending folder.

1. Install sqllite (32 bit binary for windows) from here

2. sqlite .svn/wc.db “select * from work_queue”

The SELECT should show you your offending folder/file as part of the work queue. What you need to do is delete this item from the work queue.

3. sqlite .svn/wc.db “delete from work_queue”

That’s it. Now, you can run cleanup again – and it should work. Or you can proceed directly to the task you were doing before being prompted to run cleanup (adding a new file etc.)

Also, svn.exe (a command line tool) is part of the Tortoise installer – but is unchecked for some reason. Just run the installer again, choose ‘modify’ and select the ‘command line tools’.

感觉这是一个设计上的缺陷:使用工作队列来保存数据,后一个操作依赖于前一个操作的结果,一旦失败就要使用cleanup操作。但是,当cleanup操作失败的时候这个机制就陷入了死循环。解决办法就从它的数据库中直接删除工作队列中的数据,注意是sqlite数据库。到项目的.svn目录下找到wc.db文件,使用sqlite3打开它,执行以下命令:

  delete from work_queue;

完毕后关闭数据库,重新打开项目,即可恢复正常操作。

下载sqlite3 教程:

https://www.jianshu.com/p/424a8b143bbb

 

<think>我们正在处理一个SVN报错问题,错误信息是“Previousoperationhasnotfinished”,这通常是由于之前操作被中断导致工作副本处于不一致状态。解决方法是运行'svncleanup'命令来清理工作副本。根据用户需求,我们需要提供解决此错误的具体步骤,包括如何运行cleanup命令。由于用户提到了需要运行cleanup命令,我们将详细说明如何执行此操作。步骤:1.打开命令行终端(在Windows上是CMD或PowerShell,在Mac/Linux上是Terminal)。2.导航到你的工作副本目录(即你进行SVN操作的目录)。3.运行命令:`svncleanup`注意:有时候需要指定路径,如:`svncleanup[PATH]`,如果不指定路径,则清理当前目录。如果上述步骤不能解决问题,可能需要更深入的清理,例如:-使用`svncleanup--include-externals`来清理包括外部引用的目录。-或者,如果问题仍然存在,可以尝试删除工作副本并重新检出(checkout),但请注意这会丢失本地未提交的修改。另外,如果cleanup命令本身失败,可能是由于文件锁定等问题,可以尝试:-使用TortoiseSVN等图形化工具进行清理(如果用户使用的是图形界面)。-或者手动删除工作副本中的.svn目录下的tmp文件和锁文件(但需谨慎,因为可能破坏工作副本)。但是,我们优先推荐使用命令行进行清理,因为这是最直接的方法。生成相关问题:考虑到用户遇到了SVN的特定错误,相关问题可能围绕SVN的其他常见错误、使用技巧等。§§相关问题§§1.如何预防SVN操作中断导致的问题?2.除了cleanup,还有哪些常用的SVN命令可以修复工作副本?3.如果svncleanup命令失败,应该怎么办?4.如何安全地删除工作副本并重新检出?</think>### SVN报错"Previous operation has not finished"解决方案 当SVN提示"Previous operation has not finished"错误时,表示前次操作未正常完成,工作副本处于锁定状态。以下是详细解决步骤: #### 1. 运行cleanup命令(核心解决方案) ```bash svn cleanup [工作副本路径] ``` - **Windows示例**: ```cmd cd C:\Your\Project\Path svn cleanup ``` - **Linux/macOS示例**: ```bash cd /your/project/path svn cleanup ``` - 执行后会清除锁定文件和临时文件,释放工作副本[^1] #### 2. 进阶处理(若基础清理无效) - **深度清理**: ```bash svn cleanup --remove-unversioned # 删除未版本控制的文件 svn cleanup --remove-ignored # 删除忽略的文件 ``` - **检查挂起操作**: ```bash svn info --show-item wc-root # 定位工作副本根目录 ``` 检查`.svn/wc.db`数据库文件是否损坏 #### 3. 预防措施 - 避免强制中断SVN操作(如Ctrl+C) - 定期更新SVN客户端(旧版本存在更多锁问题) - 网络操作前确保连接稳定 #### 4. 极端情况处理 若仍报错,需**完全删除工作副本并重新检出**: ```bash svn revert -R . # 撤销所有修改 rm -rf .svn # 删除版本控制目录(Linux/macOS) rd /s/q .svn # 删除版本控制目录(Windows) svn checkout [仓库URL] . # 重新检出代码 ``` > ⚠️ 注意:删除`.svn`目录前务必确认无未提交的重要修改
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值