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

时间:2014-02-18 18:16:50

标签: svn tortoisesvn dreamhost

我有一个SVN存储库(托管在Dreamhost上),在二进制文件上设置了需求锁。有时会发生这样的情况:在提交由我锁定和修改的文件时,提交失败并显示错误:

Error: Commit failed (details follow):
Error: File '/my/file.bin' is locked in
Error:  another working copy

如果我尝试锁定该文件(不窃取它),它会说:

Error: Path '/my/file.bin' is already locked by user
Error:  'my_username' in filesystem '/home/user1/svn/repo1/db'

清理无济于事,因此解决此问题的唯一方法是窃取锁定,然后提交成功。

这不是一个关键问题,但它真的很烦人,特别是当它发生在长时间提交过程中。 我倾向于认为这是由客户端或服务器的错误引起的,因为我确信我没有使用其他工作副本,并且问题经常发生(过去两天中有3次)给我和我的同事使用存储库。

我们正在使用TortoiseSVN 1.8.4,而Dreamhost svn服务器是1.6.12。

感谢您的帮助。

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

5 个答案:

答案 0 :(得分:34)

在Windows上,我通过以下步骤解决了问题: 1.单击" Repo-browser"启动资源库浏览器。在菜单中。 2.找到锁定的文件。 3.在锁定的文件上单击鼠标右键。 4.单击"中断锁定"。

答案 1 :(得分:3)

清理无济于事。这用于工作副本锁,而您遇到的问题是文件被锁定在存储库本身,作为在用户之间实现互斥的手段。见The Three Meanings of "Lock"

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

答案 2 :(得分:2)

我也遇到了同样的问题,发现在三台机器中,我已经锁定了一台机器,因此我也遇到了问题。我所做的是从该机器上释放锁定并继续进行。

OR

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

答案 3 :(得分:0)

找到了这个:https://groups.google.com/forum/#!topic/subversion_users/wZikmNEubz4 当使用svn 1.8客户端和1.6.17之前的服务器时,似乎会出现此问题: 更新工作副本的根文件夹时,我的锁会被破坏(无论需要锁定标志)。

我降级为1.7.14客户端,问题不会发生。

答案 4 :(得分:0)

如果使用JetBrains IDE:

右键单击要解锁的文件,转到 Subversion ,然后单击锁定

然后选中复选框窃取现有锁,并通过确定

进行应用

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

如果使用命令行:

使用--force锁定文件

svn lock --force path/to/file.ext

然后再次解锁

svn unlock path/to/file.ext
相关问题