From 3018e1b77b5d5f054cb69fd58fa41667c4bad024 Mon Sep 17 00:00:00 2001 From: FUJIWARA Katsunori Date: Sat, 13 May 2017 03:28:36 +0900 Subject: [PATCH] filemerge: show warning about choice of :prompt only at an actual fallback Before this patch, internal merge tool :prompt shows "no tool found to merge FILE" line, even if :prompt is explicitly specified as a tool to be used. This patch shows warning message about choice of :prompt only at an actual fallback, in which case any tool is rejected by capability for binary or symlink. It is for backward compatibility to omit warning message in "changedelete" case. --- mercurial/filemerge.py | 7 +++++-- tests/test-merge-changedelete.t | 15 +++++---------- tests/test-merge-tools.t | 18 ++++++------------ tests/test-merge-types.t | 4 ++-- 4 files changed, 18 insertions(+), 26 deletions(-) diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py index 4daf10f15f..0b8ff26400 100644 --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -209,6 +209,9 @@ def _picktool(repo, ui, path, binary, symlink, changedelete): # internal merge or prompt as last resort if symlink or binary or changedelete: + if not changedelete and len(tools): + # any tool is rejected by capability for symlink or binary + ui.warn(_("no tool found to merge %s\n") % path) return ":prompt", None return ":merge", None @@ -260,8 +263,8 @@ def _iprompt(repo, mynode, orig, fcd, fco, fca, toolconf, labels=None): choice = ['other', 'local', 'unresolved'][index] else: index = ui.promptchoice( - _("no tool found to merge %(fd)s\n" - "keep (l)ocal%(l)s, take (o)ther%(o)s, or leave (u)nresolved?" + _("keep (l)ocal%(l)s, take (o)ther%(o)s, or leave (u)nresolved" + " for %(fd)s?" "$$ &Local $$ &Other $$ &Unresolved") % prompts, 2) choice = ['local', 'other', 'unresolved'][index] diff --git a/tests/test-merge-changedelete.t b/tests/test-merge-changedelete.t index 4a3ebb7be5..0c04a67b2d 100644 --- a/tests/test-merge-changedelete.t +++ b/tests/test-merge-changedelete.t @@ -470,8 +470,7 @@ Force prompts with no input (should be similar to :fail) use (c)hanged version, (d)elete, or leave (u)nresolved? other [merge rev] changed file2 which local [working copy] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? - no tool found to merge file3 - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? 0 files updated, 0 files merged, 0 files removed, 3 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon [1] @@ -529,8 +528,7 @@ Force prompts use (c)hanged version, (d)elete, or leave (u)nresolved? u other [merge rev] changed file2 which local [working copy] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u - no tool found to merge file3 - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? u + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? u 0 files updated, 0 files merged, 0 files removed, 3 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon [1] @@ -676,8 +674,7 @@ invocations.) use (c)hanged version, (d)elete, or leave (u)nresolved? other [merge rev] changed file2 which local [working copy] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? - no tool found to merge file3 - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? --- diff of status --- (status identical) @@ -705,8 +702,7 @@ invocations.) use (c)hanged version, (d)elete, or leave (u)nresolved? other [merge rev] changed file2 which local [working copy] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? - no tool found to merge file3 - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? --- diff of status --- (status identical) @@ -724,8 +720,7 @@ invocations.) use (c)hanged version, (d)elete, or leave (u)nresolved? other [merge rev] changed file2 which local [working copy] deleted use (c)hanged version, leave (d)eleted, or leave (u)nresolved? - no tool found to merge file3 - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for file3? --- diff of status --- (status identical) diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t index ef228acc2a..8bb5edf027 100644 --- a/tests/test-merge-tools.t +++ b/tests/test-merge-tools.t @@ -531,8 +531,7 @@ ui.merge specifies internal:prompt: true.executable=cat # hg update -C 1 $ hg merge -r 2 --config ui.merge=internal:prompt - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? u + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u 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] @@ -556,8 +555,7 @@ ui.merge specifies :prompt, with 'leave unresolved' chosen $ hg merge -r 2 --config ui.merge=:prompt --config ui.interactive=True << EOF > u > EOF - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? u + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u 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] @@ -579,8 +577,7 @@ prompt with EOF true.executable=cat # hg update -C 1 $ hg merge -r 2 --config ui.merge=internal:prompt --config ui.interactive=true - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? 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] @@ -593,8 +590,7 @@ prompt with EOF # hg resolve --list U f $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? [1] $ aftermerge # cat f @@ -607,8 +603,7 @@ prompt with EOF U f $ rm f $ hg resolve --all --config ui.merge=internal:prompt --config ui.interactive=true - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? [1] $ aftermerge # cat f @@ -619,8 +614,7 @@ prompt with EOF # hg resolve --list U f $ hg resolve --all --config ui.merge=internal:prompt - no tool found to merge f - keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved? u + keep (l)ocal [working copy], take (o)ther [merge rev], or leave (u)nresolved for f? u [1] $ aftermerge # cat f diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t index f14e16c07e..2b6833a481 100644 --- a/tests/test-merge-types.t +++ b/tests/test-merge-types.t @@ -171,9 +171,9 @@ Update to link with local change should cause a merge prompt (issue3200): preserving a for resolve of a a: versions differ -> m (premerge) (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re) - picked tool ':prompt' for a (binary False symlink True changedelete False) no tool found to merge a - keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved? u + picked tool ':prompt' for a (binary False symlink True changedelete False) + keep (l)ocal [working copy], take (o)ther [destination], or leave (u)nresolved for a? u 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges 1 other heads for branch "default"