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.
This commit is contained in:
FUJIWARA Katsunori 2017-05-13 03:28:36 +09:00
parent 941307e87c
commit 3018e1b77b
4 changed files with 18 additions and 26 deletions

View File

@ -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]

View File

@ -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)

View File

@ -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

View File

@ -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"