Svn错误:"上一个操作尚未完成"

27
今天早上我正在向svn仓库提交多个项目。在提交过程中,我的操作系统崩溃了,现在所有的svn命令(包括清理)都会出现相同的错误。

今天早上我正在向svn仓库提交多个项目。在提交过程中,我的操作系统崩溃了,现在所有的svn命令(包括清理)都会出现相同的错误。

Previous operation has not finished; run 'cleanup' if it was interrupted
Please execute the 'Cleanup' command."

我不会遇到像“previous operation has not finished”导致Subversion卡死的这样的错误,因为仓库很大,我不想像在这里建议的那样再次检出所有内容:操作未完成的问题


这两个问题是有区别的,因为他还遇到了其他错误。我只是由于之前的操作未完成而导致了Subversion卡住。 - Sigurd V
13个回答

56

通过在这里找到了解决我的问题的答案。

看起来svn卡在了旧操作中。所有这些操作都存储在.svn文件夹下的wc.db数据库中。

通过下载SQLite到我的检出目录并运行以下命令:

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

通过cmd命令,我得到了一个所有待处理操作的列表。这些操作是“未完成”的操作。 然后通过运行

sqlite3.exe .svn/wc.db "delete from work_queue"

所有未完成的操作都将被删除,我可以再次提交。 不需要重新检出或做任何操作。


1
对我来说有效,但请注意,直接从上面复制到命令提示符可能会失败,因为您的浏览器会错误地呈现引号(“)。确保使用“直接”引号,或者在使用键盘粘贴命令后简单地修复它们。顺便说一句,这是一个很棒的解决方案。 - Andy
这个保存了我的本地更改!我必须使用大写的表名。WORK_QUEUE而不是work_queue。 - Luka Bradeško
1
我删除后,再次运行了清理操作,之后一切正常。 - Anoop Isaac

17

我尝试了本页面列出的所有解决方案,但我的问题仍然没有解决。

我通过另一种方式解决了它。以防仍然没有得到解决方案,请尝试这个(我使用的是 TortoiseSVN 1.9.5):

  1. 像往常一样单击“清理...”并打开清理弹出窗口

  2. 勾选“断开锁定”

  3. 点击“确定”按钮执行操作


这似乎也是我唯一可行的解决方案。谢谢! - Koshux
你救了我的一天,这终于是对我有效的解决方案。 - Arshath Shameer

5

'svn cleanup'对我有用。您可能需要以管理员身份运行此命令。


你救了我的命 @JieL 我一直在努力解决这个问题。非常感谢。 - BoCyrill

4

我尝试了Sigurd V提供的最佳解决方案,但SELECT查询给出了错误。我使用的是SVN 1.9.2和SQLite 3.13.0。

为了澄清,从SQLite网站下载的文件是"sqlite-tools-win32-x86-3130000.zip(1.51 MiB)"

以下是我与我们的软件工程师合作所做的:

  1. 下载此zip文件,并将sqlite3.exe复制到我的工作副本文件夹中
  2. 在cmd行中,连接到此文件夹中的svn数据库:sqlite3.exe .svn/wc.db
  3. 键入命令以向SQLite显示被锁定的内容:sqlite> select * from work_queue;
  4. 键入命令以向SQLite删除请求:sqlite> delete from work_queue;
  5. 重复步骤3以检查是否没有锁定任何内容。
  6. 现在一切都恢复正常了!

步骤3/4/5的截图:

step 3/4/5


3
  • 关闭所有使用您的存储库中任何文件或程序的程序(这将解锁svn以进行清理)

  • 针对您的工作副本运行“svn cleanup”(如果出现错误,请向我们显示结果)


1

我也遇到了这个错误,但我不想下载sqlite。最终我通过以下方式解决:

  1. 关闭我的eclipse。(这一步很重要,没有这一步我无法成功执行下一步)
  2. 在你的项目文件夹上,右键单击,TortoiseSVN->清理->确定

然后我就可以更新和提交而没有错误了!


1
打开Tortoise SVN设置。在“已保存的数据”选项卡上清除所有数据。

1
我看到了很多关于同一个问题的帖子和回答。我看到最常见的是将"Run Cleanup"运行到目录的顶层。但是,我已经尝试了很多次,仍然得到了错误。所以我做的是解决它直到完成。
  • 安装sqllite(32位二进制文件适用于Windows)。将exe放在顶级.svn目录所在的文件夹中。

  • sqlite .svn/wc.db "select * from work_queue";

  • 从work_queue中删除;

执行这三个语句,然后运行清理。它将无任何问题地运行。


0

我能够以下列方式解决它。

1)进入你无法通过svn成功清理的目录(根目录或子目录)。

2)在该目录中选择 .svn 文件夹,将该文件夹剪切并粘贴到另一个驱动器或不同位置(不在svn目录内)。

3)现在,进入该目录 - 右键单击并选择TortoiseSVN->Repository-browser。

4)然后,检出该文件夹。(它不会执行全新的检出)

5)所有项目将再次进行版本控制,并修复svn的内部问题,问题应该得到解决。


0

如果其他人也遇到了这个问题,他们可以使用以下选项。

进入SVN ->清理(GUI),并选择以下3个选项。

它一定会起作用。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接