乌龟SVN报告冲突,但找不到任何冲突。

54

我有一个包含多个Python项目的完整版本库的工作副本。当我在Windows资源管理器中右键单击--> SVN更新时,我会收到一个错误消息,列出特定的项目文件夹:

Command: Update
Updating: path\to\working\copy
Skipped obstructing working copy: path\to\working\copy\project
Completed: At revision: 176
Warning!: One or more files are in a conflicted state.

当我进入该项目并右键单击 --> SVN 更新时,它会成功更新。也没有冲突编辑器可用,当我右键单击--> TortoiseSVN --> 已解决时,也没有可用的文件。

是什么原因导致了这个冲突?只要这种情况继续发生,在我的工作副本中就无法更新此项目。

6个回答

113
Skipped obstructing working copy
这意味着有一个工作副本文件夹在你的更新路径中:你的更新要添加一个名为“project”的文件夹,但是你的工作副本中已经有一个版本控制的名为“project”的文件夹了。 也许你将那个文件夹从另一个工作副本中移动过来了?或者这个文件夹是它自己的工作副本(如果它有隐藏的.svn文件夹,那么它是一个独立的、单独的工作副本)。
解决方法: 将该文件夹移出你的工作副本(或者只是删除它)。然后再次运行更新。更新将再次获取一个相同名称的文件夹。但它可能与你原来的不同 - 这就是为什么我建议你在检查更新后再移动和删除该文件夹。

1
谢谢@Stefan - 它起作用了。我仍然不确定发生了什么,因为我移动的文件夹和使用SVN更新时添加到工作副本的文件夹完全相同。感谢您的帮助。 - Brian
1
感谢您用简单易懂的英语进行定义! - Sergey
我使用“在此处创建存储库”选项在子文件夹中创建了一个工作副本。然后我在父文件夹中执行了“检出”操作。这导致我有两个工作副本。我通过删除子文件夹来解决了这个问题。感谢这个简单而有效的解决方案!!! - Hnin Htet Htet Aung
当我执行“切换”操作时,通常会出现这种情况,似乎受影响的文件是外部引用。在操作结束时,它会声明“一个或多个文件处于冲突状态”,但我只需要运行更新命令,更新函数日志就会添加所有冲突文件,并且不再有警告。 - Peter Ball
当我执行“切换”操作时,经常会出现这种情况,似乎受影响的文件是外部引用。在操作结束时,它会显示“一个或多个文件处于冲突状态”,但我只需要运行更新命令,更新功能会记录已添加所有冲突文件,并且不再有警告。 - Peter Ball

10
你可以在清理菜单中勾选“删除未加版本控制的文件和文件夹”选项,如果你的svn版本支持此功能的话。这肯定会比逐个查找文件夹更容易(我总是发现它们是未加版本控制的副本)。
不过要注意,在进行此操作前,别忘了提交任何有效的新文件添加到本地版本库中!

4
尝试右键/TortoiseSVN/清理操作。这通常对我有效。

我应该在工作副本文件夹还是项目文件夹上进行操作? - Brian
你检出的文件夹(你提交的文件夹) - Chris Mackie
我刚刚尝试了清理两个,但都没有起作用,不过还是谢谢你的帮助。我总是忘记清理。 - Brian
它仍然显示“文件列表为空”。 - Brian
这可能会有所帮助 http://stackoverflow.com/questions/4278624/tortoisesvn-working-copy-folder-with-conflicts-but-file-list-is-empty - Chris Mackie

4
在Windows 10系统上,使用TortoiseSVN 1.9.5进行从分支(Project/branch/A)合并回主干(Project/trunk)时,我遇到了类似的错误提示。 我的主干工作目录没有本地修改,但合并过程中却抱怨我的工作副本文件夹的根目录:

“Skipped obstructing working copy”

问题在于我的工作副本位于不同的分区,而“Project/trunk”是指向其他分区实际文件位置的链接。
解决方法是在Junction所指向的分区的文件夹上执行TortoiseSVN合并操作,即实际存储工作副本文件的位置。

这对我的情况是正确的答案。它也适用于在Windows上使用“subst”命令替换驱动器的情况。 - markyxl

1
我遇到了同样的问题,但是它发生在一个非常大的分支的根目录下 (c:\svn\root)。我只在其中一个目录的深处工作 (c:\svn\root\some\dir\deep\down\),因此 Stefan 的解释对于我来说没有意义。
我的解决方法是逐个更新 c:\svn\root\ 中的每个目录,然后回到上一级更新 c:\svn\root\。这对我有用。不确定问题真正出在哪里。

0

我解决了这个问题,而不必移动文件,因为我的被阻止的子文件夹已经正确地链接到svn:

  1. 检入所有具有跳过阻塞工作副本的文件夹中的文件
  2. 现在您可以安全地删除被阻止的文件夹(因为我们在之前检入了所有内容)
  3. 对根文件夹执行更新

现在整个文件夹再次干净,根文件夹上的更新也可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接