windows: use normalized path to check repository nesting stable
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 24 Dec 2011 19:05:25 +0900
branchstable
changeset 15722 417127af3996
parent 15721 4751d5133f15
child 15723 1581da01d5c4
windows: use normalized path to check repository nesting current "localrepository._checknested()" uses specified path itself to compare against subrepo pathes. it is invoked from "hgsubrepo.subrepo()" or pathauditor (as callback), and both use "os.sep" as separator. this causes unexpected nesting check result, if subrepo configuration uses "/" as path separator for sub repo path. this path uses "/" to join path components (or apply "util.pconvert()" on path) to normalize.
mercurial/localrepo.py
--- a/mercurial/localrepo.py	Sat Dec 24 19:01:07 2011 +0900
+++ b/mercurial/localrepo.py	Sat Dec 24 19:05:25 2011 +0900
@@ -127,6 +127,7 @@
         if not path.startswith(self.root):
             return False
         subpath = path[len(self.root) + 1:]
+        normsubpath = util.pconvert(subpath)
 
         # XXX: Checking against the current working copy is wrong in
         # the sense that it can reject things like
@@ -148,9 +149,9 @@
         ctx = self[None]
         parts = util.splitpath(subpath)
         while parts:
-            prefix = os.sep.join(parts)
+            prefix = '/'.join(parts)
             if prefix in ctx.substate:
-                if prefix == subpath:
+                if prefix == normsubpath:
                     return True
                 else:
                     sub = ctx.sub(prefix)