首页 文章

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

提问于
浏览
13

我有一个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 - > modify file.bin - >更新整个工作副本 - > commit - > commit failed错误 . 更新后,工作副本似乎忘记了锁的状态,当它询问服务器时,它认为它被锁定在另一个工作副本上 .

5 回答

  • 3

    在Windows上,我通过以下步骤解决了问题:1 . 单击菜单中的“Repo-browser”启动Repository Browser . 2.找到锁定的文件 . 3.在锁定的文件上单击鼠标右键 . 4.单击“中断锁定” .

  • 0

    清理无济于事 . 's used for working copy locks, whereas you'遇到了一个问题,文件被锁定在存储库本身,作为在用户之间实现互斥的手段 . 见The Three Meanings of "Lock"

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

  • 0

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

    要么

    Steal the lock 然后开始工作,因为这是SVN提供的最佳选择 .

  • 2

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

    我降级到1.7.14客户端,问题没有发生 .

  • 34

    如果使用JetBrains IDE:

    右键单击要解锁的文件,转到 Subversion 并单击 lock

    然后选择复选框 steal existing lock 并申请 OK

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

    如果使用命令行:

    使用--force锁定文件

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

    并再次解锁

    svn unlock path/to/file.ext
    

相关问题