# HG changeset patch # User Martin von Zweigbergk # Date 2018-07-24 05:51:53 # Node ID 0e58c5b207454bfcf7d9ce4df8a30d040708c138 # Parent 6bfd1054d867905ac05ffe7c0ebe97009ae32ab9 mergetool: warn if ui.merge points to nonexistent tool This adds a warning when ui.merge is configured but points to an executable that doesn't exist. It gets printed once per fail, but that seems to be how our other warnings about merge tools are reported. Differential Revision: https://phab.mercurial-scm.org/D3975 diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -208,9 +208,10 @@ def _picktool(repo, ui, path, binary, sy if uimerge: # external tools defined in uimerge won't be able to handle # change/delete conflicts - if uimerge not in names and not changedelete: - return (uimerge, uimerge) - tools.insert(0, (None, uimerge)) # highest priority + if check(uimerge, path, symlink, binary, changedelete): + if uimerge not in names and not changedelete: + return (uimerge, uimerge) + tools.insert(0, (None, uimerge)) # highest priority tools.append((None, "hgmerge")) # the old default, if found for p, t in tools: if check(t, None, symlink, binary, changedelete): diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t --- a/tests/test-merge-tools.t +++ b/tests/test-merge-tools.t @@ -1748,7 +1748,9 @@ missingbinary is a merge-tool that doesn missingbinary.executable=doesnotexist # hg update -C 1 $ hg merge -y -r 2 --config ui.merge=missingbinary + couldn't find merge tool missingbinary (for pattern f) merging f + couldn't find merge tool missingbinary (for pattern f) revision 1 space revision 0