Mercurial > hg-stable
changeset 26730:a1e43e85d294
merge-tools: allow marking a mergetool as completely disabled
Very often in my life I'm finding that the only configured merge tool
present on the system is vimdiff[0], and it's currently impossible (as
far as I can tell) short of specifying `ui.merge = `[1] to actually
*disable* a merge tool. This allows vimdiff-haters to put:
[merge-tools]
vimdiff.disable = yes
in their ~/.hgrc and never see vimdiff again. I'm stopping short of
putting this as a commented out entry in the sample new user hgrc
(seen when a user runs `hg config --edit` with no ~/.hgrc) for now,
but I might come back and do that later.
0: vimdiff is at an awkward intersection: it's usually installed by
the vim package which is often installed as a vi substitute, so it's
mere presence doesn't imply me wanting it, unlike (say) kdiff3.
1: There's a related problem I ran into today where specifying
`ui.merge = :merge` failed because :merge isn't a command, which I
think is a regression. I'll try and figure that out and at least file
a bug.
author | Augie Fackler <augie@google.com> |
---|---|
date | Wed, 14 Oct 2015 12:57:33 -0400 |
parents | 16e69e6b357b |
children | 0c42b6bb2329 |
files | mercurial/filemerge.py mercurial/help/config.txt tests/test-merge-tools.t |
diffstat | 3 files changed, 28 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/filemerge.py Tue Oct 13 23:04:53 2015 -0700 +++ b/mercurial/filemerge.py Wed Oct 14 12:57:33 2015 -0400 @@ -120,12 +120,15 @@ # 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")) + if _toolbool(ui, t, "disabled", False): + disabled.add(t) 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:
--- a/mercurial/help/config.txt Tue Oct 13 23:04:53 2015 -0700 +++ b/mercurial/help/config.txt Wed Oct 14 12:57:33 2015 -0400 @@ -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
--- a/tests/test-merge-tools.t Tue Oct 13 23:04:53 2015 -0700 +++ b/tests/test-merge-tools.t Wed Oct 14 12:57:33 2015 -0400 @@ -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