pathutil: use util.pathto() to calculate relative cwd in canonpath() stable
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 02 Nov 2017 20:35:31 -0400
branchstable
changeset 34965 f445b10dc7fb
parent 34955 95f54cec0025
child 34967 19ecd39223dc
child 34979 b64ea7fb9599
child 34983 80d7dbda9294
pathutil: use util.pathto() to calculate relative cwd in canonpath() os.path.relpath() exploded if the 'root' and 'cwd' directories had different drive letters. I noticed this in TortoiseHg when typing a fileset into the filter, and it kept complaining until the closing '()' was typed. This was reproducible on the command line with: $ cd /d $ hg -R /c/Users/Matt/Projects/hg files 'set:e' Traceback (most recent call last): ... File "mercurial\pathutil.pyc", line 182, in canonpath File "ntpath.pyc", line 529, in relpath ValueError: path is on drive c:, start on drive d:
mercurial/pathutil.py
--- a/mercurial/pathutil.py	Wed Nov 01 16:54:39 2017 -0500
+++ b/mercurial/pathutil.py	Thu Nov 02 20:35:31 2017 -0400
@@ -184,8 +184,10 @@
         try:
             if cwd != root:
                 canonpath(root, root, myname, auditor)
-                hint = (_("consider using '--cwd %s'")
-                        % os.path.relpath(root, cwd))
+                relpath = util.pathto(root, cwd, '')
+                if relpath[-1] == pycompat.ossep:
+                    relpath = relpath[:-1]
+                hint = (_("consider using '--cwd %s'") % relpath)
         except error.Abort:
             pass