Java 为什么我总是得到';SVN:工作副本XXXX已锁定;尝试执行';清理';?
如果您以前在Eclipse(Subversion,subversive)中使用过SVN工具,那么您可能熟悉“工作副本”XXX“锁定…”错误 我在以下网站上找到了一篇非常有用的文章,其中提供了解决此问题的方法: 尽管解决方法很好,但一次又一次地做是一件痛苦的事情。有人知道我为什么会不断出现这种错误,以及我可以采取什么措施来防止它吗 上下文:我正在创建一个涉及监听SVN事件的Eclipse插件,因此在测试该插件时,我会不断打开和关闭工作区。我通常在每次打开工作区时都会进行1到2次提交。每次提交都会失败,并出现“工作副本锁定”错误。我希望这个错误不再发生e、 因此,任何建议都将不胜感激Java 为什么我总是得到';SVN:工作副本XXXX已锁定;尝试执行';清理';?,java,eclipse,svn,eclipse-plugin,subclipse,Java,Eclipse,Svn,Eclipse Plugin,Subclipse,如果您以前在Eclipse(Subversion,subversive)中使用过SVN工具,那么您可能熟悉“工作副本”XXX“锁定…”错误 我在以下网站上找到了一篇非常有用的文章,其中提供了解决此问题的方法: 尽管解决方法很好,但一次又一次地做是一件痛苦的事情。有人知道我为什么会不断出现这种错误,以及我可以采取什么措施来防止它吗 上下文:我正在创建一个涉及监听SVN事件的Eclipse插件,因此在测试该插件时,我会不断打开和关闭工作区。我通常在每次打开工作区时都会进行1到2次提交。每次提交都会失
谢谢!我以前在SVN方面遇到过很多问题,有一件事确实给我带来了问题,那就是在Eclipse之外修改文件或手动删除文件夹(其中包含.SVN文件夹),这可能给我带来了最大的麻烦 编辑
您还应注意不要中断SVN操作,尽管有时可能会发生错误,这可能会导致
.lock
文件无法删除,从而导致您的错误。通常会创建一个.lock
文件,它决定锁定/解锁状态,检查此文件的存在。我认为如果删除此.lock
只有文件,那么问题就会消失。经过更多的探索和测试,这个问题似乎是由调试插件和使用断点引起的。SVN/Subclipse显然不喜欢在执行中途有断点,因此创建了这个锁文件。我刚开始运行时g插件,这个问题消失了。我在使用com.xxx.service.model
包时遇到了同样的问题
为了修复它,我首先备份了模型包中的代码更改。然后删除了模型包并与存储库同步。它将显示整个文件夹/包。然后更新了我的代码
最后,将旧代码提交粘贴到SVN存储库。效果很好。当我从另一个subversion项目复制目录并尝试提交时,发生了这种情况。解决方法是删除我想要提交的目录中的.SVN控制器
注意:以上步骤仅适用于Eclipse(Indigo软件包)当您删除/移动文件时,这种类型的问题可能会发生-本质上是对目录结构进行更改。Subversion只检查已添加到Subversion的文件中所做的更改,而不是对目录结构所做的更改。与其使用操作系统的copy etc命令,不如使用svn copy etc。请参阅
此外,在提交更改时,svn首先存储“摘要”“待办事项列表中的更改列表。”。在执行此待办事项列表中的svn操作时,它会锁定文件,以防止在执行这些svn操作时发生其他更改。如果svn操作中途中断,例如由于崩溃,文件将保持锁定状态,直到svn可以完成todo列表中的操作。可以使用svn cleanup命令“重新激活”。请参见确保完全清除控制台上的内容。例如,如果子文件夹(包)被锁定:
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中,请右键单击软件包,而不是项目文件夹,然后执行清理。当项目中的某个文件夹出现问题时,会发生这种情况。 您需要找到锁定的确切文件夹,并在特定文件夹下执行
svn cleanup
。
您可以通过以下方式解决此问题:
svn commit
命令找出哪个文件夹出错svn cleanup
。然后就完成了步骤5:完成。以下操作应解锁锁定的工作副本(在svn客户端版本1.6.11和elipse版本:Mars.2发行版(4.5.2)上测试) 步骤1:(转到工作拷贝目录)$cd工作拷贝目录 步骤2:(连接到svn sqlite数据库)$sqlite3.svn/wc.db 步骤3:(从表WC_LOCK中删除所有记录)sqlite>从WC_LOCK中删除 步骤4:(断开与sqlite 3数据库的连接)sqlite>ctrl+d
步骤5:(来自eclipse)右键单击您的工作副本,然后单击Team->Refresh/Cleanup我不在计算机旁测试它。。但是
svn cleanup
是否也解决了这个问题?我知道我通常只是删除.lock文件:为什么它会被锁定?我从来没有要求它被锁定,我认为我与Eclipse或subversion的交互不保证它被锁定。此外,在团队选项下,还有锁定和解锁选项。在此错误期间,锁定选项处于启用状态,而解锁选项处于禁用状态。SVN清理也会失败。这似乎不是解决这个问题的方法。@Treebranch它可能是因为我上面提到的原因之一而锁定的。而且@Daniel也是一个很好的例子point@KennyCason如果可行的话,应该这样做@Treebranch我认为当它开始提交时,它会创建这个文件,然后在提交为comp时删除它