我有一个托管在Dreamhost上的SVN代码仓库,对二进制文件设置了needs-lock。有时,在提交由我锁定并修改的文件时,会出现提交失败的错误:
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。
感谢任何帮助。
更新:我注意到如果在提交前更新工作副本,就会出现此错误(没有错误并且不会修改锁定文件)。通过检查文件状态,在更新之前Tortoise说它被我锁定(仅在本地检查),而在更新后仅在本地检查时它给出“?”作为锁定状态,并且通过检查服务器然后说它被我锁定。在更新后,该文件变为只读(因为需要锁定) ,即使它仍标记为已修改。因此,操作序列为:锁定 file.bin-> 修改 file.bin-> 更新整个工作副本-> 提交-> 提交失败的错误。在更新后,工作副本似乎忘记了锁定状态,当它询问服务器时,它认为它被另一个工作副本锁定。
svn status
时会发生什么?在获取锁定时是否收到任何错误消息? - alroc