copy: respect ui.relative-paths in copy/rename
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 08 Feb 2019 13:00:05 -0800
changeset 41657 e41449818bee
parent 41656 dadbfcc63b3e
child 41658 727f0be3539a
copy: respect ui.relative-paths in copy/rename Differential Revision: https://phab.mercurial-scm.org/D5907
mercurial/cmdutil.py
tests/test-copy.t
--- 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