【问题标题】:Mercurial merge conflict on adjacent lines相邻行上的 Mercurial 合并冲突
【发布时间】:2011-06-17 19:59:27
【问题描述】:

我找到了以下案例。

$ 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 差异文件.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 merge


    【解决方案1】:

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

    line 1
    line 21
    

    line 11
    line 2
    

    Mercurial 不认为合并的一方是可以优先考虑的权威。 file.txt 中的标记是 Mercurial 的提示,提示您在哪里需要您的双手。

    但是,您可以通过 configuring an interactive merge tool 避免将此类文件内标记用于冲突。也可以看看this related question

    【讨论】:

    • 对迟到的评论表示歉意。但是,对我来说,这并不能真正回答这个问题。在提交 r1 中仅更改了第一行,在 r2 中仅更改了第二行。我希望 hg get 这个并自动将文件内容合并到:line 11line 21
    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多