591

当我执行以下操作时出现此错误svn update

工作副本 XXXXXXXX 已锁定 请执行“清理”命令

当我运行清理时,我得到

清理未能处理以下路径:XXXXXXXX

我如何摆脱这个循环?

4

49 回答 49

522

一种方法是:

  1. 将编辑的项目复制到另一个位置。
  2. 删除包含问题路径的文件夹。
  3. 通过 Subversion 更新包含文件夹。
  4. 根据需要复制您的文件或合并更改。
  5. 犯罪

另一种选择是删除顶级文件夹并再次签出。但希望它不会变成那样。

于 2008-09-24T15:47:13.240 回答
482

对我来说,诀窍是svn cleanup在我的工作副本的顶部运行,而不是在问题发生之前我一直在工作的文件夹中。

于 2009-08-28T03:10:04.380 回答
210

查看您的.svn文件夹,其中将有一个名为lock. 删除该文件,您将能够更新。.svn每个子目录的目录下可能会有更多的锁文件。他们也需要删除。这可以很简单地从命令行批量完成,例如

find . -name 'lock' -exec rm -v {} \;

请注意,您正在手动编辑文件.svn夹中的文件。他们被放在那里是有原因的。这个原因可能是一个错误,但如果不是,您可能会损坏您的本地副本。

来源:http ://www.svnforum.org/2017/viewtopic.php?p=6068

于 2009-07-14T13:41:02.577 回答
109

在我的情况下,我通过手动删除 WC_LOCK 表中 SQLite ".svn\wc" 文件锁定记录中的记录来解决它。

我用 SQLite 编辑器打开了“WC”文件并执行了

delete from WC_LOCK

显示从 WC_LOCK 清除的所有条目的屏幕截图

按照eakkas的评论,您可能还需要从WORK_QUEUE表中删除所有条目。

于 2012-09-07T22:09:48.873 回答
103

最简单的方法:

  1. 转到Project父目录(文件夹)
  2. 右键单击
  3. T​​ortoiseSVN然后按清理...
  4. 清理对话框将自动出现
  5. 选择Clean up working copy status, Break locks, Fix time stamps, Vacuum pristine copies, Refresh shell overlays,Include externals
  6. 确定

你成功地完成了你的工作。

检查屏幕截图以供参考。

第一步:

在此处输入图像描述

第二步: 启用 Break lock 选项(清理弹出窗口中的第二个复选框) 在此处输入图像描述

希望这会对您有很大帮助。

于 2016-02-04T04:41:39.907 回答
48

一个同事在工作中经常看到这个消息,对他来说是因为他删除了一个SVN版本控制下的目录而没有从SVN中删除它,然后在它不受版本控制的地方创建了一个新目录,同名。

如果这是您的问题...:

有不同的方法来修复它,这取决于目录被替换的方式/原因。

无论哪种方式,您都可能需要:

A) 将现有目录重命名为临时名称

B) 执行 SVN 还原以恢复从文件系统中删除的目录,而不是从 SVN 中删除的目录

从那里,你要么

A) 将相关文件复制到被删除的目录中

B)如果目录中的内容发生重大变化,请对原始目录执行 SVN 删除,提交并将新目录重命名为所需的名称,然后添加 SVN 以使目录处于版本控制之下。

于 2008-09-24T15:49:21.347 回答
38

对我来说,上述解决方案都没有奏效。我通过打破锁找到了解决方案。当我执行 svn cleanup 时,我选择了“Break Locks”和“Clean up working copy status”。

在此处输入图像描述

于 2017-05-15T18:10:50.377 回答
23

这个对我有用。

  1. 转到根文件夹,
  2. 右键单击并清理
  3. 检查所有可用选项
  4. 按确定

清理后,它将允许您更新到最新版本。

于 2013-05-10T03:05:02.467 回答
11

对我来说,这实际上是乌龟的错,有点。乌龟只是抱怨“无法清理,运行清理”,但是当我运行命令行(svn cleanup)时,它清楚地告诉我它无法删除一些正在使用的文件,解决方案很明显。一旦我关闭了 Visual Studio(它使文件保持打开状态),那么清理工作就很好了。

其他程序也可以在 repo 中保持文件打开,从而导致此问题。Excel 保持打开 xls 在另一个实例中是罪魁祸首,因此关闭所有可能使用 repo 中任何内容的程序甚至重新启动以强制程序关闭然后再次尝试清理可能是明智的。

于 2013-08-19T18:16:33.383 回答
7

我遇到了这个问题,因为外部文件夹不想链接到现有文件夹。如果在目标是现有(版本化或非版本化)文件夹的位置添加 svn:externals 属性行,您将收到 SVN Woring Copy locked 错误。在这里清理也会告诉你一切都很好,但仍然无法更新。

解决方案:从存储库中删除麻烦的文件夹,并在设置了 svn:externals 属性的根文件夹中进行更新。这将创建文件夹,一切都会再次好起来的。

这个问题对我来说是因为 svn:externals 文件需要目标文件夹进行版本控制。在我注意到这在不同的存储库中不起作用之后,我从外部文件交换到外部文件夹并陷入了这个混乱。

于 2010-05-18T15:05:07.343 回答
6

最简单的方法是显示隐藏文件夹,然后打开 .SVN 文件夹。您应该会看到一个名为“lock”的零 KB 文件,删除这将解决问题

于 2010-03-15T21:09:00.040 回答
5

我使用 SVN 1.7 遇到了完全相同的问题,上面提到的修复都没有奏效。

首先,请确保备份所有已编辑的内容。

花了几个小时后(没有重新下载所有内容,因为我的分支大小超过 6gb),我发现分支的 .svn 文件夹中有一个名为“wc”的 db 文件。

使用任何 db 管理器(我使用 firefox 的 sqlite manager 插件)打开 db 文件并导航到 WC_LOCK 表。该表将包含已获取锁的条目。从表中删除记录,你就完成了:)

于 2012-11-12T08:25:34.037 回答
3

当我遇到这个问题时,我发现直接在问题路径上运行清理命令通常似乎有效。然后我将再次从工作根目录运行清理,它会抱怨其他一些目录。我只是重复,直到它停止抱怨。

于 2009-07-16T19:01:01.543 回答
3

如果您在 Windows 机器上,通过浏览器查看存储库,您很可能会看到两个文件名相同但大小写不同的文件。Subversion 区分大小写,而 Windows 不区分大小写,因此当 Windows 认为它​​正在拉下同一个文件而 Subversion 没有时,您可以获得锁定。删除存储库中重复的文件名,然后重试。

于 2010-05-04T07:55:38.327 回答
3

我通过创建一个新文件夹、签出项目、将更新的文件复制到新文件夹来做到这一点。

它是通过新的结帐修复的。

于 2011-06-03T19:12:37.350 回答
2

您是否使用 TortoiseSVN 并且刚刚升级?我之前从 1.4 移动到 1.5 并且没有重新启动时遇到过这个问题。(尝试重新启动)。

您需要重新启动的原因是因为缓存文件变得很时髦。

否则,继续前进,将该工作副本导出到新文件夹(不要复制 .svn 隐藏文件夹),重新签出项目,然后将所有代码移回,然后继续提交。

于 2008-09-24T15:43:28.570 回答
2

只需删除 .svn 文件夹,然后在父目录上运行清理。完美运行!!

于 2009-06-11T14:57:14.797 回答
2

在 Mac OS 下的版本中:操作 -> 清理工作副本锁定在...

于 2012-07-31T14:16:09.693 回答
2

我经常遇到这样的问题。我的模式导致清理问题。

  1. 我在查看器中打开图像文件。
  2. 我删除图像文件/文件夹。
  3. 我正在尝试提交/更新

关闭打开已删除文件的图像查看器可以解决问题。也许其他软件可以以同样的方式阻止清理。

一般来说。我相信在这种情况下重新启动计算机可能会有所帮助。

于 2017-04-10T10:52:43.153 回答
1

SVN 通常会在从存储库中获取实际文件之前更新其文件夹中文件的内部结构(.svn/prop-base)。一旦文件被提取,这将被清除。由于“更新”失败或在更新过程中过早取消,因此经常引发错误。

  1. 检查 .svn/prop-base 目录下列出的所有文件
  2. 删除不在文件夹下的所有文件
  3. 清理
  4. 更新

现在更新应该可以工作了。

于 2009-03-02T22:18:15.543 回答
1

有同样的问题,因为我在版本控制的文件夹下导出了一个文件夹。必须从 TortoiseSVN 中删除该文件夹,然后从文件系统中删除该文件夹(TortoiseSVN 不喜欢未版本控制的子文件夹......为什么不呢???)

于 2009-03-12T14:41:00.583 回答
1

我在 TortoiseSVN 下有这个,错误与我在新项目下创建的新目录有关。我刚刚创建了这个项目,所以这个目录以前不可能存在。我查看了存储库浏览器,新文件夹确实已经在存储库中,但是 TortoiseSVN 并没有将其显示为已提交。

为了解决这个问题,因为我刚刚创建了文件夹,所以我在存储库中删除了它,然后进行了提交。它工作得很好。

由于我是在 Visual Studio 之外执行此操作的,因此我必须重新启动 Visual Studio 才能再次解决所有问题。

于 2010-04-26T10:22:39.037 回答
1

开始搜索......锁定......选择列出的所有文件并删除......已修复

于 2010-05-20T20:01:42.917 回答
1

以下应该做:

svn 状态 | grep ".l" | sed 's/.* (.*)$/\1/' | awk '{打印长度($1),$1}' | 排序-nr | awk '{print "pushd" $2"; svn cleanup ; popd"}' | 嘘

于 2010-06-23T22:33:45.750 回答
1

不要删除您的解决方案!

在 .svn 文件夹中,您有一个名为 lock 的文件,它的长度为 0 字节

您可以从解决方案中的所有 .svn 文件夹中删除所有这些文件,它会起作用

它适用于我的情况

于 2010-07-06T10:25:26.157 回答
1

如果你在 Linux 上,试试这个:

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

然后在该目录上运行cleanup命令,然后尝试更新。

于 2010-10-19T02:06:17.350 回答
1

文件的就地取消版本化,以及重新签出到同一位置,为我解决了这个问题。

在 TortoiseSVN 中,要进行就地取消版本化,请将工作副本的根文件夹从文件列表中右键拖动到目录树中的自身上,然后从弹出菜单中选择“SVN Export versioned items here”。TortoiseSVN 注意到目标与源相同,并建议取消对工作副本的版本控制。

取消版本化后,重新检出同一个文件夹(其中现在包含您拥有的所有文件的未版本化副本)。TortoiseSVN 会警告您正在签出到现有文件夹,但您可以继续。

在此之后,清理、更新和其他操作顺利进行。由于上述两个步骤都保留了本地修改,因此不应丢失任何信息(但在此之前备份工作副本可能是个好主意)。

一个警告:如果工作副本包含混合版本或未提交的属性更改,则该信息将丢失。对我来说,这并不常见,考虑到选择损坏的工作副本或丢失未提交的属性更改,我倾向于选择后者。

于 2011-01-11T18:10:58.550 回答
1

我在“清理”工作的地方遇到了这个问题,但“更新”会继续失败。有效的解决方案是通过 Windows 资源管理器删除有问题的文件夹,而不是 TortoiseSVN 的删除(这将删除标记为提交到存储库的内容,然后我进行了“签出”以从存储库中“更新”文件夹。

有关 O/S 删除和 SVN 删除之间区别的更多信息:http: //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html

尤其:

当您 TortoiseSVN → 删除一个文件时,它会立即从您的工作副本中删除,并在下次提交时在存储库中标记为删除。

和:

如果通过资源管理器而不是使用 TortoiseSVN 上下文菜单删除文件,则提交对话框会显示这些文件,并允许您在提交之前将它们从版本控制中删除。但是,如果您更新您的工作副本,Subversion 将发现丢失的文件并将其替换为存储库中的最新版本。

于 2011-10-21T16:56:08.903 回答
1

我做了以下事情来解决我的问题:

  1. 通过在文件夹名称前放置“_”来重命名有问题的文件夹。
  2. 对父文件夹进行了“清理”。
  3. 将有问题的文件夹重命名为原始名称。
  4. 做了一个承诺。
于 2012-06-13T21:07:32.693 回答
1

在解决方案资源管理器中,右键单击项目,在打开的子菜单中单击颠覆并选择清理。它将解决问题,就像对我一样。希望它会奏效。

于 2013-09-26T10:46:56.637 回答
1

进行清理

  1. 删除 .svn 文件夹。

  2. 在根文件夹中执行 svncheckout。

  3. 尝试执行清理操作。

这解决了我的问题。

于 2015-07-29T12:14:35.863 回答
1

对我来说,问题出在完全满的磁盘驱动器上(在我的情况下是 linux inodes),当我删除一些文件夹时,它又开始工作了。

错误如下(在任何 svn 操作上):

$ svn cleanup
svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
svn: E155004: Working copy locked; try running 'svn cleanup' on the root of the working copy ('/my/directory') instead.
svn: E155004: Working copy '/my/directory' locked
svn: E200030: sqlite[S14]: unable to open database file
svn: E200030: Additional errors:
svn: E200030: sqlite[S14]: unable to open database file
于 2015-07-31T13:24:20.987 回答
0

@Chuck 的解决方案对我来说并不实用。在我第一次遇到这个问题时,它起作用了,但也给了我很多额外的工作。在第二种情况下,我在网络外使用笔记本时更改了文件负载。更改文件后,我看不到自己一个文件夹一个文件夹。对乌龟抱有希望并努力了。怎么看:

环境是:

  1. 视觉工作室 2008
  2. 安赫斯文

程序:

  1. 首先我无法提交,它说我需要清理
  2. 其次,我无法清理,svn中有一个文件夹-“bin”
  3. 我下载了 Tortoise 最新版本,尝试过但由于文件夹损坏而无法正常工作。
  4. 重命名该文件夹,现在我可以使用最新版本更新本地存储库。
  5. 几个文件进来了。
  6. 提交并工作。
于 2010-10-22T01:12:22.930 回答
0

我的根目录中有一个文件搞砸了。(没有锁定文件,svn 清理失败等)我的整个结帐大于 2GB,网络速度很慢,所以再次检查所有内容对我来说不是一个选择。

什么对我有用:

  1. 在混乱的工作副本中还原和还原更改(#1)。
  2. 使用 --depth empty 签出另一个 repo (#2) 副本
  3. 在新的工作副本(#2)中添加并提交了文件。
  4. 在原始工作副本 (#1) 中更新。

对我来说似乎恢复了正常。

于 2011-02-11T03:45:16.560 回答
0

更新目录权限(授予写入权限)也可以解决问题。

chmod +w <dir_name>
于 2012-05-10T15:25:12.093 回答
0

我有同样的问题。似乎它已在最新版本中修复。我已将我的更新Tortoise SVN到最新版本(1.7.11)并且clean up运行良好。

你可以在这里下载最新版本:downoad tortoise svn

于 2013-04-03T08:36:25.313 回答
0

我知道这是一个非常古老的线程,但我坚持认为:

解决此问题的最简单和最安全的方法是删除隐藏的“.svn”文件夹并再次检查所有内容。

当您再次检查头部修订时,当 svn 螺丝应该保留本地更改(标记为“冲突”)时,它修复了大多数问题。

于 2013-04-10T16:18:01.373 回答
0

有时清理肯定不足以解决这个问题。

如果您使用 TortoiseSVN v1.7.2 或更高版本,请右键单击锁定文件的父目录,然后从菜单中选择 TortoiseSVN -> Repo Browser。在 Repro 浏览器 GUI 中,右键单击被锁定的文件,将有一个选项来取消锁定。

于 2013-05-17T19:38:14.723 回答
0

脚步 :

  1. 关闭 svn 文件夹中的所有编辑文件

  2. 关闭 eclipse 或任何使用 svn 目录中的文件夹或文件的编辑器。

  3. 右键单击 svn check out 文件夹,然后单击释放锁定。

  4. 右键单击 svn 签出文件夹,然后单击清理。

  5. 您的 SVN 已准备好进行 SVN 提交和更新操作。

干杯:)

于 2014-01-07T05:45:37.480 回答
0

今天我遇到了上面的问题说

svn:运行 'svn cleanup' 来移除锁(输入 'svn help cleanup' 了解详情)

是我的解决方案,开始工作

  1. 关闭 Xcode IDE,我试图从那里提交更改。
  2. 在 Mac 上 --> 转到终端 --> 键入以下命令

svn cleanup <Dir path of my SVN project code>

示例:

svn cleanup /Users/Ramdhan/SVN_Repo/ProjectName

  1. 点击进入并等待清理完成。
  2. 转到 XCode IDE 并清理并构建项目
  3. 现在我可以提交所有更改并进行更新。

希望这会有所帮助。

于 2015-07-31T13:15:06.517 回答
0

我在答案中没有看到这个问题的一个原因是,update或者checkout可能已经使用其他用户/权限完成了,例如使用$sudo.

于 2016-04-04T15:20:00.510 回答
0

首先尝试了很多解决方案,然后我只是删除了我遇到问题的文件夹。

然后执行 SVN 更新。

这对我有用。

我不会推荐它,但除此之外没有任何效果。:(

于 2016-04-22T12:26:29.573 回答
0

在使用 tortoise svn 进行 svn 更新时,该过程被中断并停止抱怨文件正在使用中。接下来它要求我对文件夹使用 CleanUp 命令。我试图运行 CleanUp 命令,但它没有这样做。然后我找到了一个使用文件夹文件的命令外壳。因此,我关闭了命令外壳并检查是否有任何编辑器正在使用与其相关的文件。我们也需要关闭它们。再次,我尝试使用选项 Break locks,revert changes,clear working copy status 对文件夹进行清理。清理成功。然后终于能够更新我的 svn 文件夹。

于 2020-10-15T13:50:38.960 回答
0

无论我尝试了多少种方法,清理都对我不起作用。相反,我从 Visual Studio 单独提交了每个文件夹。然后我提交了顶层文件夹并成功了。

于 2020-11-16T16:53:46.533 回答
0

因为这里没有列出这个答案:我的解决方案是关闭我的 IDE(在本例中为 Netbeans)。似乎IDE已锁定文件。

于 2021-09-22T08:04:39.427 回答
-1

Spotlight 在递归查找锁定文件时通常是垃圾。

Mac App Store 上的 EasyFind 工作

http://itunes.apple.com/gb/app/easyfind/id411673888?mt=12

搜索“锁”

全选/删除

于 2012-02-23T15:51:13.590 回答
-1

在对项目结构进行更改时,首先可以通过使用svn copysvn move等命令来避免这些类型的问题。请记住 svn 仅检查已添加到 subversion 的文件内部的更改,而不检查物理目录结构的更改。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html

此外,在提交更改时,svn 首先将更改的“摘要”存储在待办事项列表中。在执行此待办事项列表中的 svn 操作时,它会锁定文件以防止在执行这些 svn 操作时进行其他更改。如果 svn 操作中途中断,比如崩溃,文件将保持锁定状态,直到 svn 可以完成待办事项列表中的操作。这可以通过使用svn cleanup命令“重新激活”。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cleanup.html

于 2014-01-13T07:22:54.297 回答
-1

就我而言,运行 TortoiseSVN 的 Windows 7 机器无法完全重命名文件夹。清理、更新或重命名操作的组合无法解决问题。该文件夹最初是用不同的大小写创建的,Tortoise 或 Subversion 不会将其更改为存储库中的内容。

我的解决方案是:

  1. 通过项目外部的 Windows 资源管理器(没有 Subversion 控制文件)复制该文件夹。
  2. 通过 TortoiseSVN 删除并提交该文件夹。
  3. 通过 Windows 资源管理器使用正确的(当前)名称将文件夹复制回来。
  4. 通过 TortoiseSVN 将文件夹添加回存储库。

我在每一步之后都进行了清理。可怕的解决方案,但它对我有用。

于 2014-01-13T15:15:26.740 回答
-4

我相信它对你很好

转到顶级 SVN 文件夹。

右键单击文件夹(包含您的 svn 文件)-> TortoiseSVN -> CleanUp

这肯定会解决你的问题。

于 2014-07-23T04:32:56.533 回答