# HG changeset patch # User FUJIWARA Katsunori # Date 2011-12-24 10:05:25 # Node ID 417127af399677e16b0ed9e555480b1e521a94ca # Parent 4751d5133f15931407b6c8cb3af5aeaf4ca1aeb5 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. diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -127,6 +127,7 @@ class localrepository(repo.repository): 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 @@ class localrepository(repo.repository): 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)