SVN中的工作副本XXX已锁定,清理失败
我执行svn update
时收到此错误:
Working copy XXXXXXXX locked Please execute "Cleanup" command
当我进行清理时,我得到
Cleanup failed to process the following paths: XXXXXXXX
我如何摆脱这个循环?
解决方案
我们正在使用TortoiseSVN并刚刚升级吗?从1.4移至1.5且未重新启动之前,我曾遇到过此问题。 (尝试重新启动)。
我们需要重新启动的原因是因为缓存文件变得很时髦。
否则,只需继续,将工作副本导出到新文件夹(不要复制.svn隐藏文件夹),重新检出项目,然后将所有代码移回,然后继续进行提交。
一种方法是:
- 将已编辑的项目复制到另一个位置。
- 删除包含问题路径的文件夹。
- 通过Subversion更新包含的文件夹。
- 复制文件或者根据需要合并更改。
- 犯罪
另一种选择是删除顶层文件夹,然后再次签出。希望它不会解决这个问题。
一个在工作的同事不断看到此消息,对他来说,这是因为他删除了SVN版本控制下的目录而不将其从SVN中删除,然后在同一个名称下创建了一个不在版本控制下的新目录。
如果这是问题...:
有多种修复方法,具体取决于替换目录的方式/原因。
无论哪种方式,我们都可能需要:
A)将现有目录重命名为临时名称
B)执行SVN还原以恢复从文件系统中删除的目录,而不是从SVN中删除的目录
从那里,你或者
A)将相关文件复制到已删除的目录中
B)如果目录中的内容有重大更改,请对原始目录进行SVN删除,然后提交,然后将新目录重命名为所需的名称,然后添加SVN以使该目录受版本控制。
从存储库中获取实际文件之前,SVN通常会更新文件夹中文件的内部结构(.svn / prop-base)。提取文件后,该文件将被清除。通常,由于在更新过程中"更新"失败或者过早取消而引发错误。
- 检查.svn / prop-base目录下是否列出了任何文件
- 删除不在该文件夹下的所有文件
- 清理
- 更新
现在,更新应该可以了。
发生了同样的问题,因为我在版本控制的文件夹下导出了一个文件夹。不得不从TortoiseSVN中删除该文件夹,然后从文件系统中删除该文件夹(TortoiseSVN不喜欢未版本控制的子文件夹...为什么不呢???)
只需删除.svn文件夹,然后在父目录上运行清理即可。完美的作品!!
查看.svn
文件夹,其中会有一个名为lock
的文件。删除该文件,我们将可以更新。每个子目录的.svn目录中可能会有更多的锁定文件。他们还需要删除。这可以非常简单地从命令行中例如使用批处理来完成
find . -name 'lock' -exec rm -v {} \;
请注意,我们正在手动编辑.svn
文件夹中的文件。他们被放在那里是有原因的。该原因可能是一个错误,但如果不是这样,则可能会损坏本地副本。
消息来源:http://www.svnforum.org/2017/viewtopic.php?p=6068
当我遇到此问题时,我发现通常直接在问题路径上运行cleanup命令。然后,我将从工作根再次运行清除,它将抱怨其他一些目录。我只是重复一遍,直到它不再抱怨为止。
对我来说,诀窍是在工作副本的顶部运行" svn cleanup",而不是在问题发生之前一直在工作的文件夹中运行。
最简单的方法是显示隐藏的文件夹,然后打开.SVN文件夹。我们应该看到一个名为"锁"的零KB文件,删除此文件将解决此问题。
我在TortoiseSVN下拥有此文件,该错误与我在新项目下创建的新目录有关。我刚刚创建了这个项目,所以以前没有这个目录。我在存储库浏览器中查看,新文件夹确实已经存在于存储库中,但是TortoiseSVN并未将其显示为已提交。
为了解决该问题,由于无论如何我都只是创建了该文件夹,因此我在存储库中将其删除,然后进行了提交。工作正常。
由于我是在Visual Studio之外进行此操作的,因此必须重新启动Visual Studio才能再次解决所有问题。
如果我们使用的是Windows计算机,请通过浏览器查看存储库,我们很可能会看到两个文件名相同但大小写不同的文件。 Subversion区分大小写,而Windows则不区分大小写,因此当Windows认为它正在拉下相同的文件而Subversion却没有时,我们可以获得锁。删除存储库中重复的文件名,然后重试。
我遇到了这个问题,因为外部文件夹不想链接到现有文件夹。如果添加svn:externals属性行,其中目标是现有(版本或者非版本)文件夹,则将收到SVN Woring Copy锁定错误。在这里清理也会告诉我们一切都很好,但是仍然无法进行更新。
解决方案:从存储库中删除麻烦的文件夹,并在设置svn:externals属性的根文件夹中进行更新。这将创建文件夹,并且一切都将恢复正常。
我遇到了这个问题,因为文件的svn:externals要求对目标文件夹进行版本控制。当我发现这不适用于不同的存储库后,我从外部文件交换到了外部文件夹,并陷入了混乱。
开始搜索....锁定...选择所有列出的文件并删除..已修复
应该执行以下操作:
svn状态| grep" .L" | sed's /.(。)$ / \ 1 /'| awk'{打印长度($ 1),$ 1}'|排序-nr | awk'{print" pushd" $ 2"; svn cleanup; popd"}'| | | | | | | | SH
不要删除解决方案!
在.svn文件夹中,我们有一个名为lock的文件,它的长度为0个字节
我们可以从解决方案中的所有.svn文件夹中删除所有这些文件,然后它将起作用
以我为例
如果我们使用的是Linux,请尝试以下操作:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
然后在该目录上运行" cleanup"命令,然后尝试更新。
@Chuck的解决方案对我来说并不实际。在我第一次遇到问题时,它虽然有效,但也做了很多额外的工作。在第二种情况下,我在网络外部使用笔记本时更改了文件负载。更改文件后,我看不到一个文件夹一个文件夹。曾对乌龟抱有希望并努力工作。怎么看:
环境是:
- Visual Studio 2008年
- 安赫什文
程序:
- 首先我不敢说,它说我需要清理
- 其次,我无法清理,在svn中有一个文件夹-" bin"
- 我下载了Tortoise最新版本,但由于文件夹被塞住而无法使用。
- 重命名该文件夹,现在我可以使用最新版本更新本地存储库。
- 几个文件进来了。
- 做了承诺并且工作了。