store: invoke "os.path.isdir()" via vfs
This patch invokes "os.path.isdir()" via "rawvfs" object to avoid
filename encoding, because the path passed to "os.path.isdir()"
shouldn't be encoded.
This patch newly adds "self.rawvfs" field only to "basicstore" and
"encodedstore", because "fncachestore" has "self.rawvfs" already.
--- a/mercurial/store.py Tue Oct 09 01:41:55 2012 +0900
+++ b/mercurial/store.py Tue Oct 09 01:41:55 2012 +0900
@@ -295,6 +295,7 @@
self.path = vfs.base
self.createmode = _calcmode(vfs)
vfs.createmode = self.createmode
+ self.rawvfs = vfs
self.vfs = scmutil.filtervfs(vfs, encodedir)
self.opener = self.vfs
@@ -308,7 +309,7 @@
path += '/' + relpath
striplen = len(self.path) + 1
l = []
- if os.path.isdir(path):
+ if self.rawvfs.isdir(path):
visit = [path]
while visit:
p = visit.pop()
@@ -346,6 +347,7 @@
self.path = vfs.base
self.createmode = _calcmode(vfs)
vfs.createmode = self.createmode
+ self.rawvfs = vfs
self.vfs = scmutil.filtervfs(vfs, encodefilename)
self.opener = self.vfs