copy: respect ui.relative-paths in copy/rename
Differential Revision: https://phab.mercurial-scm.org/D5907
--- a/mercurial/cmdutil.py Fri Feb 08 12:00:44 2019 -0800
+++ b/mercurial/cmdutil.py Fri Feb 08 13:00:05 2019 -0800
@@ -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 == '?':
--- a/tests/test-copy.t Fri Feb 08 12:00:44 2019 -0800
+++ b/tests/test-copy.t Fri Feb 08 13:00:05 2019 -0800
@@ -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