SVN经常说文件被我锁定在另一个工作副本中

SVN经常说文件被我锁定在另一个工作副本中,svn,tortoisesvn,dreamhost,Svn,Tortoisesvn,Dreamhost,我有一个SVN存储库(托管在Dreamhost上),需要在二进制文件上设置锁。有时,在提交由我锁定和修改的文件时,提交失败,出现以下错误: Error: Commit failed (details follow): Error: File '/my/file.bin' is locked in Error: another working copy 如果我试图获得该文件的锁(而不是窃取它),它会说: 清理没有帮助,所以解决这个问题的唯一方法是窃取锁,然后提交成功 这不是一个关键问题,但它确

我有一个SVN存储库(托管在Dreamhost上),需要在二进制文件上设置锁。有时,在提交由我锁定和修改的文件时,提交失败,出现以下错误:

Error: Commit failed (details follow):
Error: File '/my/file.bin' is locked in
Error:  another working copy
如果我试图获得该文件的锁(而不是窃取它),它会说:

清理没有帮助,所以解决这个问题的唯一方法是窃取锁,然后提交成功

这不是一个关键问题,但它确实令人恼火,尤其是当它在长时间提交的过程中发生时。 我倾向于认为这是由客户机或服务器的错误引起的,因为我确信我没有使用其他工作副本,而且这个问题在我和使用存储库的同事中发生得相当频繁(在过去两天中发生了3次)

我们使用的是OrtoiseSVN 1.8.4,而Dreamhost svn服务器是1.6.12

谢谢你的帮助


更新:我注意到,如果在提交之前更新工作副本,就会发生错误(这不会产生错误,当然也不会修改锁定的文件)。通过检查文件的状态,在更新之前,tortoise表示它已被我锁定(仅本地检查),而在更新本地检查之后,它将“??”作为锁定状态,通过检查服务器,它随后表示它已被我锁定。更新后,即使文件仍标记为“已修改”,文件也将变为只读(因为需要锁定)。因此,操作的顺序是:锁定file.bin->修改file.bin->更新整个工作副本->提交->提交失败错误。更新后,工作副本似乎忘记了锁的状态,当它询问服务器时,它认为它已锁定在另一个工作副本上。

清理将没有帮助。这是用于工作复制锁的,而您遇到了一个问题,文件被锁定在存储库中,作为在用户之间实现互斥的一种手段。看

您可能有一个客户端在您不知情的情况下为您将文件锁定在另一个工作副本中(本地或服务器上的WC中),或者您有一个WebDAV共享,您已装载并正在打开该文件,从而导致创建锁。

发现: 在使用svn 1.8客户端和1.6.17之前的服务器时,似乎会出现此问题: 更新工作副本的根文件夹时,我的锁会被破坏(无论需要锁定标志如何)


我降级到1.7.14客户端,但问题没有出现。

我也遇到了同样的问题,发现在三台机器中,有一台机器我锁定了文件,因此我也面临着问题。我所做的就是从那台机器上松开锁,然后继续


首先窃取锁,然后开始工作,因为这是SVN提供的最佳选项。

在Windows上,我通过以下步骤修复了该问题: 1.通过单击菜单中的“回购浏览器”启动存储库浏览器。 2.找到锁定的文件。 3.在锁定的文件上单击鼠标右键。 4.单击“断开锁定”。

如果使用JetBrains IDE: 右键单击要解锁的文件,转到Subversion并单击lock

然后选中复选框窃取现有锁,并使用确定

再次右键单击该文件,转到Subversion并单击解锁

如果使用命令行: 用--force锁定文件

然后再次解锁

svn unlock path/to/file.ext

谢谢您的快速回答,我将检查您指出的可能问题。但是,我想澄清的是,只有在成功获取文件锁后,才会出现此问题。导致错误的典型操作顺序是,例如:lock file.bin->modify file.bin->commit file.bin->commit failed error我会怀疑您的工作副本是否正确记录了锁。获取锁后运行
svn status
时会发生什么?获取锁时是否收到任何错误消息?除了提交时的“已锁定”之外,我没有收到任何错误。在服务器上,我们只有使用存储库的trac,我们将尝试禁用它。无论如何,我发现这个错误似乎只有在更新之后才会发生(请参阅原始问题更新)。这听起来真的像是你在某个地方被损坏了。您是否在存储库上运行了svnadmin verify并尝试了新的工作副本签出?
svn lock --force path/to/file.ext
svn unlock path/to/file.ext