颠覆是否因“先前的操作尚未完成”而卡住了?


229

如果我尝试更新我的Subversion仓库,它说我必须运行清理。如果我运行清理,则表明文件丢失。(我删除了今天早上从家用PC提交失败的MASSIVE文件目录,但随后我下班提交了相同的文件集,现在我的主存储库崩溃了)。因此,清理说:

清理无法处理blablabla无法设置文件blablabla读写:系统找不到指定的文件。

如果我更新它说:

命令:更新错误:先前的操作尚未完成;如果被中断,请运行“清理”错误:请执行“清理”命令。完成!:

我该如何解开?


(除了删除所有SVN信息,然后重新签出)
coderama 2012年

3
那个令人讨厌的错误是为什么我讨厌svn。每次遇到此问题时,我都必须重新签出,因为从根文件夹或父文件夹进行的清理不起作用。但是最大的问题是,那时它不会显示覆盖图标,因此我不知道在检出之前已将哪个文件更改为备份
phuclv 2013年

@ sigurd-v的帖子是对我和其他人有帮助的问题的真正答案:stackoverflow.com/a/22717607/5613292
Mehdi Javan

Answers:


102

我也遇到过类似情况。您是否尝试过从工作空间的根目录运行清理?我知道有时候从子目录(问题出在哪里)进行清理是行不通的,而从工作区的根目录进行清理就行了。

如果仍然失败,则因为您已经删除了某个子目录。尝试从子目录中删除更高一级的目录(假设它不是根目录),然后重试更新和清除。

如果清除尝试在任何级别都没有成功,那么不幸的是答案是签出新的工作副本。


4
从孩子目录清理!这个对我有用!
弗朗瓦

1
如果您正在阅读本文,那么您就很麻烦:)我从来没有遇到过与Git如此混乱的情况(到目前为止)。如果Svn允许我,我最终可以在任何可能的目录上进行清洁/还原/清洁等工作。
aliopi

2
@ sigurd-v的帖子是对我和其他人有帮助的问题的真正答案:stackoverflow.com/a/22717607/5613292
Mehdi Javan

我确实从Windows FileExplorer(使用Turtoise)运行了Cleanup,它给了我一个更详细的错误,告诉我什么是问题文件,SVN丢失了该文件,一个darm * .cache文件,所以我使用了另一个.cache并将其重命名以替换丢失的文件,运行清理,此thime没有错误,已修复!
Jhollman

331

通常不需要新的结帐或复制。

我刚刚在此帮助下解决了与错误“先前的操作尚未完成”有关的类似问题(链接

似乎svn在处理命令/操作时有时会卡住。所有这些操作都存储在.svn文件夹中的数据库文件wc.db中。

通过将SQLite下载到我的checkout目录并运行

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

您可以获得所有待处理操作的列表。这些操作被错误称为“未完成”。

通过运行

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

所有旧操作都将从工作​​队列中删除,错误消失了。无需重新结帐或其他任何操作


5
在尝试上述解决方案之前,您应该始终尝试运行清理。如果您想启动并运行卡住的SVN存储库而不必签出新的工作副本,则此方法有效。
西格德五世

7
下载sqlite.exe并运行删除操作实际上比签出并合并要快-很好的答案
Jeffrey Knight

12
在此之后,我也得到了“锁定”,但是通过“ svn清理”克服了它
Jeffrey Knight

1
我在Debian上运行了它,使用apt-get install sqlite3安装,然后您可以在没有.exe的情况下运行上述命令
Richard Merchant

3
我也收到了“锁定”消息,但是随后我运行了“清理”命令,并选中了“打破锁定”框,它起作用了
McCoy

114

正在运行的控制台svn cleanup为我解决了相同的问题。


20
svn cleanup与使用Tortoise Explorer插件相比,console命令还将提供更详细的信息,这使它在这种情况下非常有用。
布兰登S

7
运行console命令可能会提供足够的信息来实际解决问题。这是一个更好的答案。
DDS 2013年

1
好吧,我选择了最顶层的文件夹并使用了svn cleanup,谢谢
deadfish

在遍历父目录并对其进行清理时,我经常会取得成功,但这有点耗时且“神奇”。不知道这会返回详细的错误+1。
Phil Cooper 2014年

运行时svn cleanup,请确保控制台已升高。我最初没有这样做,但我得到了red-write: Access is denied错误。
托尼

26

我只是有一个类似的问题。运行Process Explorer表明,另一个程序(Notepad ++)具有SVN尝试删除的文件夹的文件句柄。当我关闭Notepad ++时,“清理”能够成功运行。


那可能会产生问题中提到的问题。但是我担心,如果它已经发生,它将无法清算。
Gangnus'4

19

添加一个已经在SVN中的jar后,我遇到了这个问题,并添加了具有相同名称的新版本。

在Eclipse中,我尝试了

  1. 右键单击文件夹>团队>刷新/清理。
  2. 清理,构建和刷新我的应用程序。
  3. 重新启动Eclipse。

使用上述步骤,我可以同步。


1
为我工作。只是,第三步不是必需的(重新启动Eclipse)。
jpmottin

这也对我有用,我尝试了很多事情,但是没有成功。我确实关闭了视觉工作室,并进行了清理。非常感谢
AhammadaliPK

18

我在这里尝试了投票最多的答案,但在其他答案上却徒劳无功。我的WORK_QUEUE桌子是空的,我无法尝试在更高的文件夹中进行清理。什么的工作是以下(这是通过乌龟SVN);

  • 右键点击文件夹
  • 转到TortoiseSVN->清理...
  • 确保Break Locks选中选项to ,然后单击确定

清理操作现已成功完成,我可以继续。无需下载sqlite3或其他复杂的解决方案。


2
断锁不符合我的想法。它只会破坏在系统上使用的本地锁。未锁定别人设置的锁。
布赖恩·卡尔顿

1
sqlite3有时解决了我的问题,但是这种方法很难记起来,清理失败经常。这种方法救了我..
sc

9

在打开文件时尝试运行清理给我带来了问题。关闭应用程序(Visual Studio)后,我立即清理并成功


1
真正。确保您的文件未被使用或以其他用户身份签出,例如Windows上的Administrator。
froggythefrog

6

我用乌龟SVN。如果清理失败,请检查清理选项

确保选中了“ 打破锁定 ”选项。

清理步骤

  • 浏览文件夹中的鼠标左键
  • 选择“乌龟SVN”->“清理...”菜单
  • 选中“ Break Locks ”,然后按“确定”

它已经回答了,但有时图片有帮助

在此处输入图片说明


4

我遇到了同样的问题,在我的情况下,我在我所指的应用程序中使用了svn乌龟。在根模式下使用Windows的cmd shell,我应用了svn cleanup,然后进行了svn update...。然后您可以返回到应用程序模式,它将完美运行!


2

我尝试将.svn文件夹删除到其他位置,并将其放回同一根文件夹中。当我尝试更新SVN之后,它得到了更新。我不知道它是如何工作的。


2

我遇到了同样的问题,并且以某种方式发现我在c:\级别有一个隐藏的.svn文件。删除此隐藏文件夹(.svn)后,一切正常。我必须在根驱动器上无意间创建了一个工作目录。




2

我还坚持尝试过的相同问题:

1.尝试杀死与svn有关的进程,即TSVNCache.exe和TortoiseProc。2.还原未版本化的文件并删除它们,这是我在svn中拥有的。3.使用命令提示符“ svn cleanup”进行清理

最后,当重新启动桌面时,它对我有用,所以对于系统的重新启动对我来说是有效的


1

从主文件夹中删除svn,然后从else.rere.replace的另一个可行的副本中替换它,然后进行更新。svn文件夹通常是一个隐藏文件夹。因此,请确保在执行上述步骤之前取消隐藏文件夹。


1

适用于我的解决方法:

  1. 剪切目录的内容并将其复制到另一个文件夹。
  2. 从空文件夹的命令行运行清理。
  3. 将文件复制回原始文件夹。

完成,但是我无法解释为什么会这样。如果您不删除文件,则清理命令会说他无法读取/写入这些文件。


1

我遇到了同样的问题,什么对我有用:

  1. 将您的文件夹和文件复制到另一个位置,例如复制到一个文件夹(我最近更改了文件,但是承诺失败并导致了已解决的问题)
  2. 签出新的工作副本
  3. 将更改后的文件从文件夹复制到工作副本,并覆盖现有文件。提交/更新现在应该可以工作

1

我遇到了诸如“无法更改文件'/Users/Code/UnitTest.cpp'的权限:没有这样的文件或目录”的错误。该子版本对不再存在的文件感到困惑。我只是做了诸如“ echo ABCD >> /Users/Code/UnitTest.cpp”之类的操作来创建文件的副本,然后进行清理。有效。


1

就我而言,尝试从IDE内提交时出现错误。当我在资源管理器中使用TortoiseSVN执行相同目录的提交时,该操作成功。


1

当我使用外部设备时,这已经发生了,其中之一已损坏。我必须去那个文件夹并进行清理。然后,清理工作适用于整个工作副本。

示例:使用外部^/widgets/foo common/foo-widget,首先对folder进行清理common/foo-widget


1

今天,当我尝试提交给SVN时,我解决了该错误。错误是真实的,TortoiseSVN无法访问我尝试提交的文件。在Windows中运行“作为管理员”程序时已保存此文件。这意味着该文件具有管理员访问权限,但没有从我的帐户访问(TortoiseSVN以交互用户身份运行)。我在Windows帐户下获得了所提名文件的所有权,此后便可以继续进行清理了。


0

我最初在尝试使用TortoiseSVN时遇到此问题。最初,TortoiseSVN清理和控制台svn清理均失败,并显示与原始海报类似的消息。

但是我的解决方案(偶然发现)只是等待几分钟。我认为TSVNCache在签入时会保留其中的某些文件。


0

请按照以下步骤操作。

1)转到无法成功清理的目录 svn。(根文件夹或子文件夹)目录。

2)选择 .svn在目录中文件夹,剪切该文件夹并将其粘贴到单独的驱动器或单独的位置(svn目录之外)

3)现在,返回目录-右键单击并选择 TortoiseSVN -->Repo-browser

4) Checkout该文件夹(它将不执行全新签出)。

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


仅执行完整的结帐。有什么帮助吗?
candidJ

0

在我的情况下,一个后台Java虚拟机实例正在运行,杀死了成功进行的清理。




0

当您尝试SVN切换/清理时仍打开文件时,可能会发生这种情况。

我在一个分支中创建了一个新文件,该文件已在另一个应用程序中打开。切换到另一个分支无法删除文件,从而导致切换失败。这也导致svn cleanup失败,但是在Tortoise SVN UI中未将其显示为原因。

运行svn cleanup在控制台窗口(在根文件夹)清楚地显示了错误file\location\file.ext: The process cannot access the file because it is being used by another process

关闭所有打开的文件句柄/窗口并运行控制台,svn cleanup然后可使清理工作正常进行。

长话短说- svn cleanup在控制台中运行以查看更详细的错误。


0

除了Sigurd V的答案(您应该首先尝试)之外,一些较大的代码库具有多个“ .svn”文件夹,并且不一定是根目录中具有锁定任务的文件夹。

如果是这种情况,则必须检查每个。如果您已经有了SQLite和Powershell,则可以快速找到有问题的目录。

要查找已锁定的文件夹,请运行(替换path\to\sqlite.exe):

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } }

这给出了.svn目录的列表,并在每个目录的下面列出了所有当前任务。

如果有未完成的任务,则每次运行(替换path\to\sqlite.exepath\to\.svn\wc.db):

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"


0

我已经看到了与之相关的几个问题svn,包括这一问题,可以通过删除/创建.svn/tmp目录来解决。然后跑svn cleanup


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.