diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py index 16e69e6b357b0a1a05c920989e408676cb670168_bWVyY3VyaWFsL2ZpbGVtZXJnZS5weQ==..a1e43e85d2940de1732c69a53c279d61e1cc1698_bWVyY3VyaWFsL2ZpbGVtZXJnZS5weQ== 100644 --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -120,7 +120,8 @@ # then merge tools tools = {} + disabled = set() for k, v in ui.configitems("merge-tools"): t = k.split('.')[0] if t not in tools: tools[t] = int(_toolstr(ui, t, "priority", "0")) @@ -123,5 +124,7 @@ for k, v in ui.configitems("merge-tools"): t = k.split('.')[0] if t not in tools: tools[t] = int(_toolstr(ui, t, "priority", "0")) + if _toolbool(ui, t, "disabled", False): + disabled.add(t) names = tools.keys() @@ -127,5 +130,5 @@ names = tools.keys() - tools = sorted([(-p, t) for t, p in tools.items()]) + tools = sorted([(-p, t) for t, p in tools.items() if t not in disabled]) uimerge = ui.config("ui", "merge") if uimerge: if uimerge not in names: diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt index 16e69e6b357b0a1a05c920989e408676cb670168_bWVyY3VyaWFsL2hlbHAvY29uZmlnLnR4dA==..a1e43e85d2940de1732c69a53c279d61e1cc1698_bWVyY3VyaWFsL2hlbHAvY29uZmlnLnR4dA== 100644 --- a/mercurial/help/config.txt +++ b/mercurial/help/config.txt @@ -1004,7 +1004,10 @@ kdiff3.priority = 1 # Changing the priority of preconfigured tool - vimdiff.priority = 0 + meld.priority = 0 + + # Disable a preconfigured tool + vimdiff.disabled = yes # Define new tool myHtmlTool.args = -m $local $other $base $output diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t index 16e69e6b357b0a1a05c920989e408676cb670168_dGVzdHMvdGVzdC1tZXJnZS10b29scy50..a1e43e85d2940de1732c69a53c279d61e1cc1698_dGVzdHMvdGVzdC1tZXJnZS10b29scy50 100644 --- a/tests/test-merge-tools.t +++ b/tests/test-merge-tools.t @@ -193,6 +193,26 @@ M f ? f.orig +or true set to disabled: + $ beforemerge + [merge-tools] + false.whatever= + true.priority=1 + # hg update -C 1 + $ hg merge -r 2 --config merge-tools.true.disabled=yes + merging f + merging f failed! + 0 files updated, 0 files merged, 0 files removed, 1 files unresolved + use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon + [1] + $ aftermerge + # cat f + revision 1 + space + # hg stat + M f + ? f.orig + or true.executable not found in PATH: $ beforemerge