Mercurial 相邻行上的可变合并冲突

Mercurial 相邻行上的可变合并冲突,mercurial,merge,Mercurial,Merge,我发现了以下情况 $ hg init $ echo ' > line 1 > line 2 > ' > file.txt $ hg add file.txt $ hg commit -m 'added' $ echo ' > line 11 > line 2 > ' > file.txt $ hg commit -m 'changed line 1' $ hg update 0 $ echo ' > line 1 > line 21 &

我发现了以下情况

$ hg init
$ echo '
> line 1
> line 2
> ' > file.txt
$ hg add file.txt
$ hg commit -m 'added'
$ echo '
> line 11
> line 2
> ' > file.txt
$ hg commit -m 'changed line 1'
$ hg update 0
$ echo '
> line 1
> line 21
> ' > file.txt
$ hg commit -m 'changed line 2'
$ hg merge 1
结果是:

合并file.txt失败

hg diff file.txt

diff -r bc62305d407b file.txt
--- a/file.txt  Fri Jun 17 22:53:22 2011 +0300
+++ b/file.txt  Fri Jun 17 22:53:46 2011 +0300
@@ -1,4 +1,9 @@

+<<<<<<< local
line 1
line 21
+=======
+line 11
+line 2
+>>>>>>> other
diff-r bc62305d407b file.txt
---a/file.txt星期五6月17日22:53:22 2011+0300
+++b/file.txt星期五6月17日22:53:46 2011+0300
@@ -1,4 +1,9 @@
+>其他
如果我们尝试上面的场景,但是有3行,并且更改在1行和2行上,合并将成功。
那么,我的问题是为什么会发生这种情况?这是合并算法的问题还是其他问题?

Mercurial无法自动合并,因为人类必须解决冲突。Mercurial如何知道合并版本是否应该包含

line 1
line 21

不考虑合并的一方作为优先权。
file.txt
中的标记是Mercurial为您提供的提示,用于您需要双手的地方


但是,可以通过在冲突上使用标记来避免此类文件内标记。另外,请看。

对您的迟来评论表示歉意。然而,对我来说,这并不能真正回答问题。在提交r1中,仅更改了第一行,在r2中,仅更改了第二行。我希望hg能得到这个,并自动将文件内容合并到:
第11行
第21行
line 11
line 2