diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -209,6 +209,9 @@ def _picktool(repo, ui, path, binary, sy # 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, fc 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 --- a/tests/test-merge-changedelete.t +++ b/tests/test-merge-changedelete.t @@ -470,8 +470,7 @@ Force prompts with no input (should be s 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 --- 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 $ 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 --- a/tests/test-merge-types.t +++ b/tests/test-merge-types.t @@ -171,9 +171,9 @@ Update to link with local change should preserving a for resolve of a a: versions differ -> m (premerge) (couldn't find merge tool hgmerge|tool hgmerge can't handle symlinks) (re) + no tool found to merge a 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 + 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"