changeset 17725:ffd589d4b785

vfs: define "join()" in each classes derived from "abstractvfs" This patch defines "join()" in each classes derived from "abstractvfs" except "vfs", which already defines it. This allows all vfs instances to be used for indirect file API invocation.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Tue, 09 Oct 2012 01:41:55 +0900
parents bf4b72d8dd4d
children 7cb7e17c23b2
files mercurial/scmutil.py mercurial/statichttprepo.py mercurial/store.py
diffstat 3 files changed, 18 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmutil.py	Tue Oct 09 01:41:55 2012 +0900
+++ b/mercurial/scmutil.py	Tue Oct 09 01:41:55 2012 +0900
@@ -347,6 +347,12 @@
     def __call__(self, path, *args, **kwargs):
         return self._orig(self._filter(path), *args, **kwargs)
 
+    def join(self, path):
+        if path:
+            return self._orig.join(self._filter(path))
+        else:
+            return self._orig.join(path)
+
 filteropener = filtervfs
 
 def canonpath(root, cwd, myname, auditor=None):
--- a/mercurial/statichttprepo.py	Tue Oct 09 01:41:55 2012 +0900
+++ b/mercurial/statichttprepo.py	Tue Oct 09 01:41:55 2012 +0900
@@ -74,6 +74,12 @@
             f = "/".join((self.base, urllib.quote(path)))
             return httprangereader(f, urlopener)
 
+        def join(self, path):
+            if path:
+                return os.path.join(self.base, path)
+            else:
+                return self.base
+
     return statichttpvfs
 
 class statichttppeer(localrepo.localpeer):
--- a/mercurial/store.py	Tue Oct 09 01:41:55 2012 +0900
+++ b/mercurial/store.py	Tue Oct 09 01:41:55 2012 +0900
@@ -441,6 +441,12 @@
             self.fncache.add(path)
         return self.vfs(self.encode(path), mode, *args, **kw)
 
+    def join(self, path):
+        if path:
+            return self.vfs.join(self.encode(path))
+        else:
+            return self.vfs.join(path)
+
 class fncachestore(basicstore):
     def __init__(self, path, vfstype, dotencode):
         if dotencode: