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.
--- 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)