diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -279,6 +279,7 @@ keep as the merged version.""" ui = repo.ui fd = fcd.path() + uipathfn = scmutil.getuipathfn(repo) # Avoid prompting during an in-memory merge since it doesn't support merge # conflicts. @@ -287,7 +288,7 @@ 'support file conflicts') prompts = partextras(labels) - prompts['fd'] = fd + prompts['fd'] = uipathfn(fd) try: if fco.isabsent(): index = ui.promptchoice( @@ -394,13 +395,14 @@ def _mergecheck(repo, mynode, orig, fcd, fco, fca, toolconf): tool, toolpath, binary, symlink, scriptfn = toolconf + uipathfn = scmutil.getuipathfn(repo) if symlink: repo.ui.warn(_('warning: internal %s cannot merge symlinks ' - 'for %s\n') % (tool, fcd.path())) + 'for %s\n') % (tool, uipathfn(fcd.path()))) return False if fcd.isabsent() or fco.isabsent(): repo.ui.warn(_('warning: internal %s cannot merge change/delete ' - 'conflict for %s\n') % (tool, fcd.path())) + 'conflict for %s\n') % (tool, uipathfn(fcd.path()))) return False return True @@ -580,9 +582,10 @@ def _xmerge(repo, mynode, orig, fcd, fco, fca, toolconf, files, labels=None): tool, toolpath, binary, symlink, scriptfn = toolconf + uipathfn = scmutil.getuipathfn(repo) if fcd.isabsent() or fco.isabsent(): repo.ui.warn(_('warning: %s cannot merge change/delete conflict ' - 'for %s\n') % (tool, fcd.path())) + 'for %s\n') % (tool, uipathfn(fcd.path()))) return False, 1, None unused, unused, unused, back = files localpath = _workingpath(repo, fcd) @@ -622,7 +625,7 @@ lambda s: procutil.shellquote(util.localpath(s))) if _toolbool(ui, tool, "gui"): repo.ui.status(_('running merge tool %s for file %s\n') % - (tool, fcd.path())) + (tool, uipathfn(fcd.path()))) if scriptfn is None: cmd = toolpath + ' ' + args repo.ui.debug('launching merge tool: %s\n' % cmd) @@ -841,6 +844,8 @@ ui = repo.ui fd = fcd.path() + uipathfn = scmutil.getuipathfn(repo) + fduipath = uipathfn(fd) binary = fcd.isbinary() or fco.isbinary() or fca.isbinary() symlink = 'l' in fcd.flags() + fco.flags() changedelete = fcd.isabsent() or fco.isabsent() @@ -864,8 +869,8 @@ raise error.Abort(_("invalid 'python:' syntax: %s") % toolpath) toolpath = script ui.debug("picked tool '%s' for %s (binary %s symlink %s changedelete %s)\n" - % (tool, fd, pycompat.bytestr(binary), pycompat.bytestr(symlink), - pycompat.bytestr(changedelete))) + % (tool, fduipath, pycompat.bytestr(binary), + pycompat.bytestr(symlink), pycompat.bytestr(changedelete))) if tool in internals: func = internals[tool] @@ -891,9 +896,10 @@ if premerge: if orig != fco.path(): - ui.status(_("merging %s and %s to %s\n") % (orig, fco.path(), fd)) + ui.status(_("merging %s and %s to %s\n") % + (uipathfn(orig), uipathfn(fco.path()), fduipath)) else: - ui.status(_("merging %s\n") % fd) + ui.status(_("merging %s\n") % fduipath) ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca)) @@ -904,7 +910,7 @@ raise error.InMemoryMergeConflictsError('in-memory merge does ' 'not support merge ' 'conflicts') - ui.warn(onfailure % fd) + ui.warn(onfailure % fduipath) return True, 1, False back = _makebackup(repo, ui, wctx, fcd, premerge) @@ -957,7 +963,7 @@ raise error.InMemoryMergeConflictsError('in-memory merge ' 'does not support ' 'merge conflicts') - ui.warn(onfailure % fd) + ui.warn(onfailure % fduipath) _onfilemergefailure(ui) return True, r, deleted @@ -985,6 +991,7 @@ def _check(repo, r, ui, tool, fcd, files): fd = fcd.path() + uipathfn = scmutil.getuipathfn(repo) unused, unused, unused, back = files if not r and (_toolbool(ui, tool, "checkconflicts") or @@ -996,7 +1003,7 @@ if 'prompt' in _toollist(ui, tool, "check"): checked = True if ui.promptchoice(_("was merge of '%s' successful (yn)?" - "$$ &Yes $$ &No") % fd, 1): + "$$ &Yes $$ &No") % uipathfn(fd), 1): r = 1 if not r and not checked and (_toolbool(ui, tool, "checkchanged") or @@ -1005,7 +1012,7 @@ if back is not None and not fcd.cmp(back): if ui.promptchoice(_(" output file %s appears unchanged\n" "was merge successful (yn)?" - "$$ &Yes $$ &No") % fd, 1): + "$$ &Yes $$ &No") % uipathfn(fd), 1): r = 1 if back is not None and _toolbool(ui, tool, "fixeol"): diff --git a/tests/test-merge10.t b/tests/test-merge10.t --- a/tests/test-merge10.t +++ b/tests/test-merge10.t @@ -37,8 +37,9 @@ (run 'hg heads' to see heads, 'hg merge' to merge) $ hg up -C 2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge - merging testdir/subdir/a and testdir/a to testdir/subdir/a +Abuse this test for also testing that merge respects ui.relative-paths + $ hg --cwd testdir merge --config ui.relative-paths=yes + merging subdir/a and a to subdir/a 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) $ hg stat