当前位置:  开发笔记 > 开发工具 > 正文

Kdiff和hg:自动合并后未解决的冲突

如何解决《Kdiff和hg:自动合并后未解决的冲突》经验,为你挑选了1个好方法。

我们使用Mercurial(+ Tortoise Hg)作为VCS,使用Kdiff作为差异和合并工具.

有些文件会自动合并,有时这个自动合并结果很奇怪:

    public static Method()
<<<<<<< local
    {
        DoSmth();
    }
=======
    {
        DoSmth2();
    }
>>>>>>> other

似乎kdiff对文件中未解决的冲突没有做任何事情,但将其标记为已解决.也许kdiff有时不理解diff文件格式?hg和kdiff集成中的一些错误?

也似乎最近出现了这个问题,可能是新版本的hg/tortoise hg/kdiff的问题?

我们正在使用:

Windows 7 x64

TortoiseHg和Mercurial 3.6.1

Kdiff 0.9.98

来自mercurial.ini:

[ui]
merge = kdiff3

[tortoisehg]
editor=VisualStudio
vdiff=meld

[merge-tools]
meld.executable = C:\Program Files (x86)\Meld\meld.exe
meld.priority = 1
meld.premerge = False
meld.args = $local $base $other

[diff]
git = True

更新:

即使手动合并也会出现问题.脚步:

开始变装

Tortoise Hg说:'有冲突' 合并失败

单击"工具解析",Kdiff打开 Kdiff nuans

在这里!父1(中间列)包含'dest','source'作为文件的一部分.但是这个文件中没有这样的行.

似乎HG给kdiff文件提供了一些Kdiff不能/不可理解的差异信息.



1> Mark Tolonen..:

这是Mercurial 3.6.0和3.6.1中的一个错误.它在3.6.2中得到修复.

解决:仅在合并完全完成后恢复.orig(issue4952)

引用原始报告:

Jonathan Little 2015-11-13 17:41:55 UTC

我遇到了Mercurial 3.6中引入的以下问题.我使用TortoiseHG 3.6运行版本3.6 + 20151109,但问题似乎是hg核心(请参阅我的THG错误报告:https://bitbucket.org/tortoisehg/thg/issues/4354)我看到的行为:

将合并工具(.ugrc/mercurial.ini中的[ui]合并)设置为internal:merge

创建具有两个单独分支的存储库,每个分支上都有一个更改,以使更改彼此冲突.

合并两个分支头.internal:merge将使用冲突标记保留冲突文件.

运行"hg resolve --tool = kdiff3".

预期结果:KDiff3正确显示共享祖先内容和两个冲突修订(请参阅Expected.jpg).

实际结果:KDiff3正确显示共享祖先修订版和"其他"冲突修订版,但本地冲突修订版包含来自internal:merge的合并标记(请参阅Actual.jpg).

THG内置的KDiff3配置以及mercurial/default.d/mergetools.rc内置的KDiff3配置会出现问题.使用仅由kdiff3.executable组成的准系统配置不会发生这种情况,但是当您添加参数并使用$ local时会发生这种情况.因此看起来$ local的处理已经改为简单地使用文件的当前本地内容而不是来自本地分支的合并父级的内容.

此行为始于3.6.0.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有