简短的回答:你不能。你不能,因为 Subversion 通常使用所谓的三向合并。您需要两个端点(分支的 HEAD 和主干的 HEAD)加上 最近的共同祖先 (MRCA) 作为合并中的第三个点。
MRCA 用于确定分支上的更改以及主干上的更改。假设我们的文件最初看起来像这样:
one
two
three
four
five
six
在我们的后备箱上:
one
FOO
three
BAR
five
FUBAR
在我们拥有的分支上:
one
two
BARFOO
four
five
six
我们现在想将我们的分支与主干合并。如果我们简单地做一个比较,我们会看到第二行、你、第四行和第六行不同。然而,主干上的二四线和六线被改变了。我们不想更改它们以匹配分支上的内容。相反,分支上唯一更改的行是第 3 行。我们将第 3 行从分支替换到主干。没有触及其他线条。
现在,Subversion 合并比这复杂一点,但这是三路合并的基本算法:您将要合并的两个 HEAD 与它们的 MRCA 进行比较。没有 MRCA,您就无法合并 - 这就是您所处的情况。
即使--ignore-ancestory 标志也不起作用,因为您在主干上有foo.txt,在您的分支上有foo.txt。在您看来,它们可能看起来像同一个文件,但根据 Subversion,它们不是同一个文件。它们是两个完全不同的文件,只是碰巧位于同一个目录中并且具有相同的名称。
如果您想简单地强制您的主干看起来像您的分支,您可以尝试--accept theirs-full 标志。同样,我不能 100% 确定这会起作用,因为 Subversion 可能拒绝识别文件名。如果你没有安装 Subversion 1.8,你可以试试--reintegrate 选项。
最后,您可以尝试欺骗 Subversion。在主干的正确分支点创建另一个分支。看看那个新分支。使用系统的复制命令(而不是通过 Subversion)将文件从坏分支复制到这个新分支。现在,提交任何更改(您可能必须添加不存在的文件并删除应该不再存在的文件)。提交更改。
您应该有一个看起来与坏分支完全相同的新分支。但是,由于此分支具有 MRCA,您应该可以进行合并。