当合并几个分支(使用 SVN 1.6.1)时,两个分支上都添加了一个文件(然后在这些单独的分支中处理),我遇到了新的树冲突之一:

      C foo.txt
  >   local obstruction, incoming add upon merge

我需要两个分支的更改,但树冲突并没有给我通常的 .working、.merge-left 和 .merge-right 文件 - 由于冲突的性质,这是可以理解的。其中存在相当多的冲突,并且每个分支上都发生了相同文件的删除,但它们很容易解决。

我该如何解决这个问题?SVN redbean 的书(1.6 版)没有涵盖这种情况。

有帮助吗?

解决方案

正如旧版本(2009)中提到的 “树木冲突”设计 文档:

合并添加版本控制文件导致的 XFAIL 冲突

此测试进行合并 将没有历史记录的文件添加到现有版本的文件中.
这应该是 ' 文件的树冲突local obstruction, incoming add upon merge' 种类。修复了 r35341 中的预期。

(顺便说一句,这在 ClearCase 中也称为“邪恶双胞胎”):
一个文件在两个不同的分支中创建两次(此处“添加”两次),为两个不同的元素创建两个不同的历史记录,但名称相同。

理论上的解决方案是手动合并这些文件(使用外部差异工具)到目标分支'B2'.

如果您仍在源分支上工作,理想的情况是从源分支中删除该文件 B1, ,合并回来 B2B1 为了使该文件可见 B1 (然后您将处理相同的元素)。
如果无法合并回来,因为合并仅发生在 B1B2, ,那么每个都需要手动合并 B1->B2 合并。

其他提示

我发现了一个交建议的解决方案该。这是关于运行:

svn resolve --accept working <YourPath>

这将要求本地版本文件作为确定。结果 您可以为单个文件或整个项目的目录中运行它。

  

如果传入的变化是你想要的吗?我无法运行svn解决--accept他们全

SVN决心--accept基

我好不容易才几乎完全是自己塞得努力遵循上述user619330的建议。这种情况是:(1):我已经增加了一些文件上我最初的分支,BRANCH1的工作时; (2)我创建了一个新的分支,BRANCH2的进一步发展,从主干分支其关闭,然后合并从BRANCH1(3)一位同事抄袭了我的MODS从BRANCH1到他自己的分支我的变化,增加后续的MOD,然后合并到主干; (4)我现在想从主干上的最新更改合并到我的当前工作的分支,BRANCH2。这是使用svn 1.6.17。

在合并了新的文件目录树冲突,我想从他们不同的主干新的版本,所以从BRANCH2的全新副本,我做了一个SVN删除冲突的文件,致力于这些BRANCH2变化(因此创建BRANCH2的临时版本,而有问题的文件),然后做了我从主干合并。我这样做是因为我想历史相匹配的主干版本,以便试图合并回主干的时候,我不会有更多的问题后。合并都很好,我得到了文件的主干版本,SVN ST表示一切OK,然后我打更多的树冲突,而试图提交更改的删除我早前已完成,从合并的添加。难道冲突的SVN决心支持我的工作副本(现在有文件的主干版本),并得到了它的承诺。所有应该不错吧?

好,没有。 BRANCH2的另一个副本更新造成了老版本的文件(躯干前合并)的。所以现在我有BRANCH2的两种不同的工作副本,按说更新到相同的版本,有两个不同版本的文件,都坚持认为他们完全是最新的!检查出BRANCH2的全新副本导致文件的旧(主干预)版本。我手动更新这些对主干版本并提交更改,回到我的第一个工作副本(从我提交了树干原本改变),尝试更新它,现在让有问题的文件校验和错误。吹有问题的目录中了,获得通过更新的新版本,最后我有什么应该是一个很好的版本BRANCH2与主干的修改。我希望。警告开发者。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top