为啥我不断收到“SVN:工作副本 XXXX 锁定;尝试执行“清理”?

Posted

技术标签:

【中文标题】为啥我不断收到“SVN:工作副本 XXXX 锁定;尝试执行“清理”?【英文标题】:Why do I keep getting 'SVN: Working Copy XXXX locked; try performing 'cleanup'?为什么我不断收到“SVN:工作副本 XXXX 锁定;尝试执行“清理”? 【发布时间】:2011-06-19 10:51:01 【问题描述】:

如果您之前在 Eclipse 中使用过 SVN 工具(Subversion,subversive),那么您可能熟悉“工作副本 'XXX' 锁定...”错误。

我在Working copy XXX locked and cleanup failed in SVN找到了一篇非常有用的帖子,其中包含解决此问题的方法

尽管解决方法很好,但一遍又一遍地做是很痛苦的。有谁知道我为什么不断收到此错误以及我可以采取哪些措施来防止它?

上下文:我正在创建一个涉及监听 SVN 事件的 Eclipse 插件,所以在测试这个插件时,我不断地打开和关闭工作区。每次打开工作区时,我通常会进行 1 或 2 次提交。每隔一段时间,提交就会失败,我会收到“工作副本锁定”错误。我希望不再发生此错误,因此不胜感激。

谢谢!

【问题讨论】:

您是否能够在不进行团队 -> 清理的情况下解决此问题?我不希望我的用户必须继续进行刷新/清理... 【参考方案1】:
    选择项目 右键单击选定的项目 团队 -> 清理

问题解决了。

注意:以上步骤仅适用于 Eclipse(Indigo 包)

【讨论】:

谢谢。清理肯定有帮助。 它也适用于 Eclipse Luna...感谢您的提示。 为 Luna Service Release 1 (4.4.1) 工作 它适用于 android Studio 1.2.1。非常感谢。 在 MyEclipse 8.6.1 中也可以使用!【参考方案2】:

通常会创建一个.lock 文件,它决定锁定/解锁状态检查该文件的存在性。我想如果你只删除这个.lock 文件,那么问题就会消失。

【讨论】:

我不在我的电脑前测试它.. 但svn cleanup 也没有解决这个问题吗?我知道我通常只是删除 .lock 文件:p 为什么它会被锁定?我从来没有要求它被锁定,我不认为我与 Eclipse 或颠覆的交互保证它被锁定。此外,在团队选项下,还有锁定和解锁选项。在此错误期间,启用了 Lock 选项,禁用了 Unlock 选项。 SVN 清理也失败了。这似乎不是解决此问题的方法。 @Treebranch 可能由于我上面提到的原因之一而被锁定。 @Daniel 也提出了一个很好的观点 @KennyCason 如果可行的话,应该可以。 @Treebranch 我认为当它开始提交时,它会创建此文件,然后在提交完成时将其删除。可能还有其他情况要创建此文件。但是,它通常不应该永远停留。我猜有时,错误,它无法删除锁定文件,然后它假定正在进行的操作会影响源代码的稳定性并且不允许任何更改。但是,通常该文件存在是有原因的。 :)【参考方案3】:

我之前在使用 SVN 时遇到过很多问题,其中一件肯定会导致我出现问题的事情是在 Eclipse 之外修改文件或手动删除文件夹(其中包含 .svn 文件夹),这可能给我带来了最大的麻烦.

编辑 您还应该注意不要中断 SVN 操作,尽管有时可能会出现错误,这可能导致 .lock 文件未被删除,从而导致您的错误。

【讨论】:

你说得很好,我相信我得到错误的原因是因为我正在调试我的插件并且断点正在中断 SVN 命令。【参考方案4】:

确保您完全清除控制台所说的内容。例如,如果一个子文件夹(一个包)被锁定:

   svn: E155004: Commit failed (details follow):
  svn: E155004: Working copy 'C:\Users\laura\workspace\tparser\src\de\test\order' locked
  svn: E155004: 'C:\Users\laura\workspace\tparser\src\de\test\order' is already locked.

清理 C:/Users/liparulol/workspace/tparser/src/de/mc/etn/parsers/order

然后你需要清理指定的文件夹而不是整个项目。如果你在 Eclipse 中右键单击包,而不是项目文件夹并执行清理。

【讨论】:

这是真正的解决方案,救命稻草。【参考方案5】:

经过更多的探索和测试,这个问题似乎是由调试插件和使用断点引起的。 SVN/Subclipse 显然不喜欢在执行过程中设置断点,因此创建了这个锁文件。一旦我开始运行插件,这个问题就消失了。

【讨论】:

【参考方案6】:

当您项目中的某个文件夹出现问题时,就会发生这种情况。 您需要找出锁定的确切文件夹并在特定文件夹下执行svn cleanup。 您可以通过以下方式解决此问题:

    运行svn commit命令找出出错的文件夹。 将目录更改为该文件夹并运行svn cleanup。然后就完成了。

【讨论】:

【参考方案7】:

以下应该解锁一个锁定的工作副本(在 svn 客户端版本 1.6.11 和 elipse 版本上测试:Mars.2 Release (4.5.2))

第一步:(进入工作副本目录)$cd working_copy_dir

第二步:(连接到svn sqlite数据库)$sqlite3 .svn/wc.db

第三步:(从表WC_LOCK中删除所有记录)sqlite>从WC_LOCK中删除;

第四步:(断开与 sqlite 3 数据库的连接)sqlite>ctrl + d

第 5 步:(来自 eclipse)右键单击您的工作副本,然后单击 Team -> Refresh/Cleanup

【讨论】:

【参考方案8】:

我在使用 com.xxx.service.model 包时遇到了同样的问题。

为了修复它,我首先对模型包中的代码更改进行了备份。然后删除模型包并与存储库同步。它将显示传入的整个文件夹/包。然后更新了我的代码。

最后,将旧代码提交粘贴到 SVN 存储库。它工作正常。

【讨论】:

【参考方案9】:

当我从另一个颠覆项目复制目录并尝试提交时,这发生在我身上。解决方案是删除我要提交的目录中的 .svn 目录。

【讨论】:

【参考方案10】:

当您删除/移动文件时可能会发生这种类型的问题 - 实质上是更改您的目录结构。 Subversion 仅检查已添加到 subversion 的文件中所做的更改,而不检查对目录结构所做的更改。与其使用操作系统的 copy 等命令,不如使用 svn copy 等。请参阅http://svnbook.red-bean.com/en/1.7/svn.tour.cycle.html

此外,在提交更改时,svn 首先将更改的“摘要”存储在待办事项列表中。在执行此待办事项列表中的 svn 操作时,它会锁定文件以防止在执行这些 svn 操作时进行其他更改。如果 svn 操作中途中断,比如崩溃,文件将保持锁定状态,直到 svn 可以完成待办事项列表中的操作。这可以通过使用 svn cleanup 命令“重新激活”。请看http://svnbook.red-bean.com/en/1.7/svn.tour.cleanup.html

【讨论】:

【参考方案11】:

解决方案: 第一步: 必须删除“.svn”隐藏文件下的“lock”文件。 第二步: 如果没有“lock”文件,那么你会看到“we.db”,你必须打开这个数据库,需要从下表中单独删除内容 --锁 – wc_lock 第 3 步: 清理您的项目 第 4 步:现在尝试提交。 第 5 步: 完成。

【讨论】:

以上是关于为啥我不断收到“SVN:工作副本 XXXX 锁定;尝试执行“清理”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不断收到此空指针未知来源错误?

为啥我不断收到交互失败 (discord.py)

为啥我不断收到“java.net.MalformedURLException:无协议”[重复]

为啥我不断收到这个受诅咒的 SQL*Plus 无效标识符错误?

为啥我在地图箭头功能中不断收到未定义的错误?

Wavefront OBJ Parsing - 为啥我不断收到不正确的数据作为输出?