Mercurial手动合并无法启动meld

5

我阅读了完全手动的 Mercurial 合并,所以我有一个这样的.hgrc文件:

[ui]
merge = meld

[merge-tools]
meld.priority = 1
meld.premerge = False
meld.args = $local $other $base 

[merge-patterns]
** = meld

然而,hg merge -r REV 就能正常工作,我不明白我错在哪里...

我想要手动合并以删除其他分支引入的一些更改。另一个分支有一个改变多个文件的变更集,我不想修改它们全部。

2个回答

6
我有两个猜测。要么你的配置设置没有被采用,要么Mercurial认为你的合并没有足够的冲突需要解决。
你可以使用“hg showconfig”进行检查,确保你看到了你的meld设置。
如果他们已经显示出来了,那么也许两个要合并的变更集之间没有足够的冲突。即使将premerge设置为假,仍然需要有某些需要合并的内容。在两个变更集的同一文件中是否有实际变更?也许尝试“hg merge --tool internal:fail”,然后检查“hg resolve --list”来查看里面有什么。

好的,我的合并设置被正确获取了,但似乎你说的没冲突是对的。新来的变更集修改了一些未修改过的文件,我本以为我可以触发手动合并来排除其中一些变更,但事实上这似乎是不可能的。 - Maxime R.
尝试使用 hg merge --tool internal:prompthg merge --tool internal:dump。我不知道它们是否会在进程早期中止,但如果是这样的话,也许你可以手动调用meld? - Ry4an Brase
谢谢,实际上我通过将传入的变更集重新基于我的项目的早期版本解决了我的问题。这触发了一些合并时的冲突,启动了meld,我有机会手动选择要保留哪些更改 :) - Maxime R.
好的,即使Meld无法启动,您也可以随时启动编辑器并编辑源文件以在合并之后但提交之前包含/排除任何内容。在合并期间添加新代码通常是不被赞同的,但手动删除一些东西是相当正常的。 - Ry4an Brase

0

我正在按照您的指示使用MELD进行差异比较。我得到了这个:

    hg meld file.F
usage:
    meld                       Start with no windows open
    meld <dir>                 Start with VC browser in 'dir'
    meld <file>                Start with VC diff of 'file'
    meld <file> <file> [file]  Start with 2 or 3 way file comparison
    meld <dir>  <dir>  [dir]   Start with 2 or 3 way directory comparison

meld: error: no such option: -a

这个-a选项从哪里来的?

嗨,你应该针对这个问题提出一个新的问题。看起来Mercurial没有给出正确的参数集。 - Maxime R.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接