Patchwork [STABLE] pathutil: use util.pathto() to calculate relative cwd in canonpath()

login
register
mail settings
Submitter Matt Harbison
Date Nov. 3, 2017, 1:16 a.m.
Message ID <7d799a9800793cb5f1c1.1509671792@Envy>
Download mbox | patch
Permalink /patch/25370/
State Accepted
Headers show

Comments

Matt Harbison - Nov. 3, 2017, 1:16 a.m.
# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 1509669331 14400
#      Thu Nov 02 20:35:31 2017 -0400
# Branch stable
# Node ID 7d799a9800793cb5f1c10ce7269c31e1c7b1285a
# Parent  95f54cec00258ffa4caa8df38e4ecb265aa7a0a3
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:
Yuya Nishihara - Nov. 3, 2017, 2:04 a.m.
On Thu, 02 Nov 2017 21:16:32 -0400, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison@yahoo.com>
> # Date 1509669331 14400
> #      Thu Nov 02 20:35:31 2017 -0400
> # Branch stable
> # Node ID 7d799a9800793cb5f1c10ce7269c31e1c7b1285a
> # Parent  95f54cec00258ffa4caa8df38e4ecb265aa7a0a3
> pathutil: use util.pathto() to calculate relative cwd in canonpath()

Queued for stable, thanks.

Patch

diff --git a/mercurial/pathutil.py b/mercurial/pathutil.py
--- a/mercurial/pathutil.py
+++ b/mercurial/pathutil.py
@@ -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