filemerge: more backwards compatible behavior for ui.merge
if ui.merge matches a tool in [merge-tools], it is used as the
default tool selection but may be rejected by binary or gui or
other checks. If ui.merge does not match a merge tool, it is
used unconditionally.
--- a/mercurial/filemerge.py Wed Feb 06 20:32:06 2008 -0600
+++ b/mercurial/filemerge.py Wed Feb 06 20:44:25 2008 -0600
@@ -60,10 +60,14 @@
t = k.split('.')[0]
if t not in tools:
tools[t] = int(_toolstr(ui, t, "priority", "0"))
+ names = tools.keys()
tools = [(-p,t) for t,p in tools.items()]
tools.sort()
- if ui.config("ui", "merge"):
- tools.insert(0, (None, ui.config("ui", "merge"))) # highest priority
+ uimerge = ui.config("ui", "merge")
+ if uimerge:
+ if uimerge not in names:
+ return (uimerge, uimerge)
+ tools.insert(0, (None, uimerge)) # highest priority
tools.append((None, "hgmerge")) # the old default, if found
for p,t in tools:
toolpath = _findtool(ui, t)