changeset 17007:21e18c608b68

scmutil: change canonpath to use util.samefile (issue2167) Fixes (on Windows in cmd.exe): $ hg -R v:\x\a status V:\x\a\bar abort: V:\x\a\bar not under root where v:\x\a is a valid repository with a checked-out file "bar" (Note the difference in casing: "v:\" versus "V:\")
author Adrian Buehlmann <adrian@cadifra.com>
date Thu, 14 Jun 2012 11:43:48 +0200
parents 6fc7fd72ba3e
children 553e8f5aba7a
files mercurial/scmutil.py
diffstat 1 files changed, 6 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmutil.py	Thu Jun 14 11:03:20 2012 +0200
+++ b/mercurial/scmutil.py	Thu Jun 14 11:43:48 2012 +0200
@@ -324,18 +324,16 @@
     else:
         # Determine whether `name' is in the hierarchy at or beneath `root',
         # by iterating name=dirname(name) until that causes no change (can't
-        # check name == '/', because that doesn't work on windows).  For each
-        # `name', compare dev/inode numbers.  If they match, the list `rel'
-        # holds the reversed list of components making up the relative file
-        # name we want.
-        root_st = os.stat(root)
+        # check name == '/', because that doesn't work on windows). The list
+        # `rel' holds the reversed list of components making up the relative
+        # file name we want.
         rel = []
         while True:
             try:
-                name_st = os.stat(name)
+                s = util.samefile(name, root)
             except OSError:
-                name_st = None
-            if name_st and util.samestat(name_st, root_st):
+                s = False
+            if s:
                 if not rel:
                     # name was actually the same as root (maybe a symlink)
                     return ''