diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1135,6 +1135,7 @@ dryrun = opts.get("dry_run") wctx = repo[None] + uipathfn = scmutil.getuipathfn(repo, legacyrelativevalue=True) def walkpat(pat): srcs = [] if after: @@ -1144,7 +1145,7 @@ m = scmutil.match(wctx, [pat], opts, globbed=True) for abs in wctx.walk(m): state = repo.dirstate[abs] - rel = m.rel(abs) + rel = uipathfn(abs) exact = m.exact(abs) if state in badstates: if exact and state == '?': @@ -2188,7 +2189,7 @@ ret = 0 except error.LookupError: ui.status(_("skipping missing subrepository: %s\n") - % m.rel(subpath)) + % uipathfn(subpath)) return ret @@ -2819,7 +2820,7 @@ for f in names: if f.startswith(path_): return - ui.warn("%s: %s\n" % (m.rel(path), msg)) + ui.warn("%s: %s\n" % (uipathfn(path), msg)) for abs in ctx.walk(matchmod.badmatch(m, badfn)): if abs not in names: diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -51,8 +51,10 @@ ) if pycompat.iswindows: + from . import windows as platform from . import scmwindows as scmplatform else: + from . import posix as platform from . import scmposix as scmplatform parsers = policy.importmod(r'parsers') @@ -757,7 +759,7 @@ pathto = repo.pathto return lambda f: pathto(f, cwd) else: - return lambda f: f + return platform.localpath def subdiruipathfn(subpath, uipathfn): '''Create a new uipathfn that treats the file as relative to subpath.''' diff --git a/tests/test-copy.t b/tests/test-copy.t --- a/tests/test-copy.t +++ b/tests/test-copy.t @@ -118,6 +118,23 @@ [255] $ hg st -A ? foo +respects ui.relative-paths + $ mkdir dir + $ cd dir + $ hg mv ../foo ../bar + ../foo: not copying - file is not managed + abort: no files to copy + [255] + $ hg mv ../foo ../bar --config ui.relative-paths=yes + ../foo: not copying - file is not managed + abort: no files to copy + [255] + $ hg mv ../foo ../bar --config ui.relative-paths=no + foo: not copying - file is not managed + abort: no files to copy + [255] + $ cd .. + $ rmdir dir $ hg add foo dry-run; print a warning that this is not a real copy; foo is added $ hg mv --dry-run foo bar