237

如果我尝试更新我的 subversion 存储库,它说我必须运行清理。如果我运行清理,它说文件丢失。(我从我的家用电脑上删除了今天早上未能提交的文件的 MASSIVE 目录,但后来我从工作中提交了相同的文件集,现在我的家庭仓库已经破产了)。所以,清理说:

Cleanup failed to process blablabla Can't set file blablabla read-write: 系统找不到指定的文件。

如果我更新它说:

命令:更新错误:之前的操作还没有完成;如果中断,请运行“清理”错误:请执行“清理”命令。完全的!:

我该如何解决这个问题?

4

29 回答 29

335

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

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

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

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

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

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

通过运行

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

所有旧操作都从工作队列中删除,错误消失。不需要新的结帐或任何东西

于 2014-03-28T15:54:58.190 回答
120

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

于 2013-10-21T09:18:55.480 回答
104

我也遇到过类似的情况。您是否尝试过从工作区的根目录运行清理?我知道有时从子目录(问题所在)进行清理不起作用,而从工作区的根目录进行清理则可以。

如果仍然失败,因为您在某处删除了子目录。尝试从子目录中删除更高的 1 级(假设不是根目录),然后重新尝试更新和清理。

如果清理尝试在任何级别都没有成功,那么答案很遗憾是签出一个新的工作副本。

于 2012-04-12T18:28:08.263 回答
26

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

于 2013-09-10T17:34:44.930 回答
22

我在这里尝试了投票最多的答案和其他一些无济于事的答案。我的WORK_QUEUE桌子是空的,我无法尝试在更高的文件夹中进行清理。以下是有效的(这是通过 Tortoise SVN);

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

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

于 2017-12-21T09:53:34.357 回答
20

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

在 Eclipse 我试过这个

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

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

于 2014-08-25T11:59:36.810 回答
9

在文件打开时尝试运行清理给我带来了问题。一旦我关闭了我的应用程序(Visual Studio),我就运行清理并且它成功了

于 2014-01-08T16:55:35.297 回答
9

我使用乌龟SVN。清理失败时,检查清理选项

确保勾选了Break Locks选项。

清理步骤

  • 探索文件夹中的鼠标左键
  • 选择“乌龟 SVN”->“清理...”菜单
  • 检查“打破锁定”并按“确定”

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

在此处输入图像描述

于 2019-07-17T08:53:26.133 回答
4

我遇到了同样的问题,在我的情况下,我在我的意思的应用程序中使用了 svn tortoise。在 root 模式下使用 windows 的 cmd shell 我应用了 svn cleanup 然后 svn update.... 然后你可以回到应用模式 a 并且它会完美地工作!

于 2015-05-19T14:36:12.240 回答
3

我也遇到了我尝试过的同样问题:

1.尝试杀死与svn相关的进程,即TSVNCache.exe和TortoiseProc 2.恢复未版本化的文件并删除我在svn中的相同文件。3.cleanup 使用命令提示符“svn cleanup”

最后当重新启动桌面时它对我有用,所以重新启动系统对我有用

于 2018-07-04T12:28:24.907 回答
2

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

于 2012-07-11T14:14:58.697 回答
2

I had the same problem, and somehow found that I had a hidden .svn file at the c:\ level. Once I deleted this hidden folder (.svn), everything worked okay. I must have unintentionally created a working directory at the root drive.

于 2014-07-09T19:03:24.680 回答
2

就我而言,我运行 gulp-watch 导致了问题。停止它后,我可以执行清理命令。

于 2015-03-20T11:58:51.807 回答
2

我已经看到了几个问题svn,包括这个,通过删除/创建.svn/tmp目录来解决。然后运行svn cleanup

于 2018-07-19T21:49:14.670 回答
2

在我的情况下,在我关闭 Visual Studio 并重试 CleanUp 之后,它就可以工作了。

于 2017-05-29T09:57:18.307 回答
2

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

于 2018-06-15T09:18:59.740 回答
1

对我有用的解决方法:

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

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

于 2013-10-16T10:59:16.653 回答
1

从主文件夹中删除 svn 并将其替换为您从 elsewere 获得的另一个可行副本。然后更新。svn 文件夹通常是一个隐藏文件夹。因此,请确保在执行上述步骤之前取消隐藏文件夹。

于 2013-07-31T05:21:39.290 回答
1

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

于 2014-10-11T08:24:33.030 回答
1

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

于 2014-08-03T07:44:04.600 回答
1

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

  1. 将您的文件夹和文件复制到另一个地方,比如说一个文件夹(我最近更改了我的文件并且承诺失败并导致了已解决的问题)
  2. 签出一个新的工作副本
  3. 将更改的文件从文件夹复制到工作副本并覆盖现有文件。提交/更新现在应该可以工作
于 2014-02-12T09:24:51.997 回答
1

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

于 2017-02-15T09:00:06.287 回答
1

我最初在尝试使用 TortoiseSVN 时遇到了这个问题。最初,TortoiseSVN clean up 和 console svn cleanup 都以与原始海报相似的消息失败。

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

于 2016-09-29T14:53:39.367 回答
1

当您尝试进行 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在控制台中运行以查看更详细的错误。

于 2018-04-13T12:50:50.410 回答
1

我在使用外部设备时发生了这种情况,其中一个损坏了。我不得不去那个文件夹并执行清理。然后清理工作适用于整个工作副本。

示例:使用 external ^/widgets/foo common/foo-widget,首先对文件夹执行清理common/foo-widget

于 2016-03-21T12:21:08.063 回答
1

除了 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"

于 2018-05-28T17:24:28.087 回答
1

在日食中;

  1. 右键单击您的项目文件夹 > 团队 > 刷新/清理。
  2. 在 Eclipse 窗口中,选择 Project 菜单项下的 clean 选项
  3. 最后重启Eclipse
于 2020-09-18T06:29:24.530 回答
1

我从我的开发人员那里拿走了 .svn 文件夹,并用这个替换了我的 .svn 文件夹。它对我有用。不知道还有什么后果!

于 2017-08-10T14:56:31.680 回答
0

请按照以下步骤操作。

svn1)通过.(根文件夹或子文件夹)转到您无法成功清理的目录。

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

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

4)Checkout文件夹(它不会执行新的结帐)。

5)你所有的项目都会重新版本化,它会修复svn的内部问题,问题应该得到解决。

于 2016-04-22T09:27:55.463 回答