1. Arne Babenhauserheide
  2. hg-stable


Katsunori FUJIWARA  committed 417127a

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.

  • Participants
  • Parent commits 4751d51
  • Branches stable

Comments (0)

Files changed (1)

File mercurial/localrepo.py

View file
         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
         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
                     sub = ctx.sub(prefix)