繁体   English   中英

相邻线上的Mercurial合并冲突

[英]Mercurial merge conflict on adjacent lines

我发现以下案例。

$ 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

如果我们尝试上面的场景,但有3行并且更改在1和2行,则合并将成功。 那么,我的问题为什么会这样呢? 这是合并算法或其他问题吗?

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

line 1
line 21

要么

line 11
line 2

Mercurial并未将合并的一方视为可以优先考虑的权威。 file.txt中的标记是Mercurial为您提供需要的提示。

但是,您可以通过配置要在冲突中使用的交互式合并工具来避免此类文件内标记。 另外看看这个相关的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM