我执行svn update
时出现以下错误:
工作副本 XXXXXXXX 被锁定,请执行“清理”命令
当我运行清理命令时,出现以下提示:
清理无法处理以下路径:XXXXXXX
我该如何跳出这个循环?
我执行svn update
时出现以下错误:
工作副本 XXXXXXXX 被锁定,请执行“清理”命令
当我运行清理命令时,出现以下提示:
清理无法处理以下路径:XXXXXXX
我该如何跳出这个循环?
一种解决方法是:
另一种选择是删除顶层文件夹并重新检出。但希望不必采取此措施。
svn cleanup
,而不是在出现问题之前一直在工作的文件夹中运行。.svn
文件夹中,会有一个名为lock
的文件。删除该文件,您就可以进行更新了。每个子目录的.svn
目录中可能还有更多的锁定文件。它们也需要被删除。可以通过命令行批处理来完成这个操作,例如:find . -name 'lock' -exec rm -v {} \;
.svn
文件夹中的文件。它们被放在那里是有原因的。这个原因可能是一个错误,但如果不是的话,您可能会损坏您的本地副本。find . | grep ".svn/lock" | xargs rm
。 - Jessedelete from WC_LOCK
根据eakkas的评论,您可能还需要删除WORK_QUEUE
表中的所有条目。
我的同事在工作中经常看到这个消息,对他来说是因为他从SVN版本控制下删除了一个目录,但没有从SVN中删除它,然后用相同的名称创建了一个不在版本控制下的新目录。
如果这是你的问题...:
有不同的方法可以解决它,具体取决于目录是如何/为什么被替换的。
无论如何,你可能需要:
A)将现有目录重命名为临时名称
B)进行SVN还原以恢复从文件系统中删除的目录,但未从SVN中删除的目录
从那里,你可以:
A)将相关文件复制到已删除的目录中
B)如果你在目录中有重大变化,请在原始目录上执行SVN删除、提交,然后将你的新目录重新命名为所需名称,并执行SVN添加,以便将该 目录置于版本控制下。
这种方法对我有用。
清理后,您就可以更新到最新版本了。
对我来说,有点责任在于Tortoise。它只是抱怨“无法清理,运行清理”,但当我运行命令行(svn cleanup)时,它明确告诉我它无法删除一些正在使用的文件,而解决方法很明显。一旦我关闭了Visual Studio(它一直保持这些文件开启状态),那么清理就可以正常工作。
其他程序也可能会保持repo中的文件处于打开状态,从而导致此问题。 Excel保持xls文件开启是另一个罪魁祸首,因此关闭可能使用repo中任何内容的所有程序,甚至重启以强制程序关闭,然后再尝试清理是明智的。
我遇到了这个问题,因为外部文件夹不想链接到现有文件夹中。如果您在目标是已存在的(版本化或非版本化)文件夹的情况下添加svn:externals属性行,则会出现SVN工作副本锁定错误。在此情况下进行清理也会告诉您一切正常,但仍然无法更新。
解决方案:从存储库中删除有问题的文件夹,并在设置了svn:externals属性的根文件夹中进行更新。这将创建该文件夹,一切都会恢复正常。
我遇到这个问题是因为文件的svn:externals需要目标文件夹受版本控制。在我注意到这在不同存储库之间不起作用后,我从外部文件切换到外部文件夹并陷入了困境。