# HG changeset patch # User FUJIWARA Katsunori # Date 1428593802 -32400 # Node ID dd0b86f740ef7789bfd5ef050371776b01ebe9bc # Parent 98ab035e9332c3a805e3c8fca3b061de185b3725 subrepo: add wvfs field to access the working directory via vfs This patch doesn't create vfs object in "abstractsubrepo.__init__()" but adds propertycache-ed "wvfs" field, because the latter can: - delay vfs instantiation until it is actually needed - allow to use "hgsubrepo._repo.wvfs" as "wvfs" "hgsubrepo._repo" is initialized after "abstractsubrepo.__init__()" invocation, and passing "hgsubrepo._repo.wvfs" to "abstractsubrepo.__init__()" is difficult. diff -r 98ab035e9332 -r dd0b86f740ef mercurial/subrepo.py --- a/mercurial/subrepo.py Fri Apr 10 00:36:42 2015 +0900 +++ b/mercurial/subrepo.py Fri Apr 10 00:36:42 2015 +0900 @@ -552,6 +552,12 @@ def shortid(self, revid): return revid + @propertycache + def wvfs(self): + """return vfs to access the working directory of this subrepository + """ + return scmutil.vfs(self._ctx.repo().wvfs.join(self._path)) + class hgsubrepo(abstractsubrepo): def __init__(self, ctx, path, state): super(hgsubrepo, self).__init__(ctx, path) @@ -944,6 +950,12 @@ def shortid(self, revid): return revid[:12] + @propertycache + def wvfs(self): + """return own wvfs for efficiency and consitency + """ + return self._repo.wvfs + class svnsubrepo(abstractsubrepo): def __init__(self, ctx, path, state): super(svnsubrepo, self).__init__(ctx, path)