SVN中的工作副本XXX已锁定并且清除失败

Dan*_*Dan 578 svn tortoisesvn

当我这样做时,我收到此错误svn update:

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

当我进行清理时,我得到了

清理无法处理以下路径:XXXXXXXX

我怎么摆脱这个循环?

Chu*_*uck 515

一种方法是:

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

另一种选择是删除顶级文件夹并再次签出.希望它不会发生这种情况.

  • 给你+1这个解决方法不仅修复OP的问题(和我的),而且还提供了似乎解决任何svn问题的5个步骤.-1以颠覆所需的此类变通方法. (122认同)
  • 虽然这在技术上是有效的,但与去除它应该进行下调的锁相比,这样做是一种糟糕的方式. (33认同)
  • 考虑一下BradS的建议"对我而言,诀窍是在我的工作副本的顶部运行'svn cleanup',而不是在问题发生之前我一直在工作的文件夹中." (20认同)
  • 我不能做第3步因为......"工作副本已被锁定" (8认同)
  • 对于使用Tortoise SVN的用户,可以在签出目录的根文件夹上运行清理并强制使用Break Locks.此外,您可以要求它删除未版本控制的文件.然后进行更新. (5认同)

Bra*_*adS 473

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

  • 这对我有用,比Chuck的方式快得多.因此,首先要做到这一点是值得的. (5认同)
  • 虽然服务器仍然是1.6.x,但这对我来说是一个运行1.7的客户端 (4认同)

小智 209

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

find . -name 'lock' -exec rm -v {} \;
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这不再适用于Tortoise/SVN 1.7(或者至少我找不到任何锁定文件,因为现在有一个带有元数据的集中式数据库). (44认同)
  • 这是一个快速的单行程序,应该递归删除从当前目录开始的所有锁:`find.| grep".svn/lock"| xargs rm` (10认同)
  • +1我认为这比目前最高的投票答案要好得多 - 我讨厌不得不先将文件复制到其他地方以解决这个问题(常见问题).我的代码生成工具生成的文件与其他人已添加到SVN的名称相同.我不认为首先不是"svn up"... (8认同)
  • 对于svn 1.7这个答案有效:http://stackoverflow.com/a/12326057/932282 (2认同)

Ive*_*aev 105

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

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

delete from WC_LOCK
Run Code Online (Sandbox Code Playgroud)

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

根据eakkas的评论,您可能还需要删除WORK_QUEUE表中的所有条目.

  • 这也适用于我,但我还需要清除WORK_QUEUE表中的条目 (12认同)
  • 通过删除WC_LOCK中的项目没有工作 - 我的WORK_QUEUE项目的blob内容工作是什么,确定它是问题文件 - 我从repo浏览器中删除了文件然后删除了work_queue项目 - 在此之后经营清理并重新开始营业! (6认同)
  • 一个免费的DI SQL间谍也可以做到这一点:http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index (3认同)

Hir*_*tel 92

最简单的方式:

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

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

检查屏幕截图以供参考.

第一步:

在此输入图像描述

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

希望这对你有很大的帮助.

  • 在我的情况下,"破锁"选项就足够了,也许尝试先用这一个只 (10认同)
  • 这对我有用,谢谢:) (2认同)

Mat*_*att 48

工作中的同事经常看到这条消息,对他而言,这是因为他删除了SVN版本控制的目录而没有将其从SVN中删除,然后在不受版本控制的情况下创建了一个具有相同名称的新目录.

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

有多种方法可以修复它,具体取决于更换目录的方式/原因.

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

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

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

从那里,你会

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

B)如果您对目录中的内容进行了重大更改,请对原始内容执行SVN删除,提交并将新目录重命名为所需名称,然后添加SVN以在版本控制下获取该目录.


Lov*_*oid 33

对我来说,上述解决方案都没有奏效.我通过打破锁来找到解决方案.当我执行svn清理时,我选择了"Break Locks"和"清理工作副本状态".

在此输入图像描述


Lan*_*nce 22

这个对我有用.

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

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

  • 这对我也有用.您需要检查所有可用选项(我的版本中有6个条目)才能继续清理; 如果您只选中[清理工作副本状态]和[包含外部]选项,则会失败. (2认同)

Mar*_*wul 11

对我来说,这实际上是Tortoise的错.Tortoise抱怨"无法清理,运行清理",但是当我运行命令行(svn cleanup)时,它清楚地告诉我它无法删除一些正在使用的文件,解决方案显而易见.一旦我关闭Visual Studio(保持文件打开),清理工作正常.

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


Oli*_*del 7

我遇到了这个问题,因为外部文件夹不希望链接到现有文件夹.如果添加svn:externals属性行,其中目标是现有(版本化或非版本化)文件夹,您将获得SVN Woring Copy锁定错误.这里的清理工作也会告诉你,everthing是可以的,但仍然无法更新.

解决方案:从存储库中删除麻烦的文件夹,并在设置了svn:externals属性的根文件夹中进行更新.这将创建文件夹,所有将再次正常.

这个问题出现在我身上,因为文件的svn:externals需要对目标文件夹进行版本控制.在我注意到这不适用于不同的存储库之后,我从外部文件转移到外部文件夹并陷入了混乱.


小智 6

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


Roh*_*han 5

我使用SVN 1.7遇到了完全相同的问题,并且没有上述修复工作.

最重要的是,请确保备份所有已编辑的内容.

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

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