store: initialize vfs field first to use it for initialization of others
This patch initializes "vfs" field in the constructor of each store
classes to use it for initialization of others.
In this patch, "self.vfs.base" is used to initialize "self.path",
because redo join of path components for "self.path" is redundant.
--- a/mercurial/store.py Tue Oct 09 01:41:55 2012 +0900
+++ b/mercurial/store.py Tue Oct 09 01:41:55 2012 +0900
@@ -291,9 +291,9 @@
class basicstore(object):
'''base class for local repository stores'''
def __init__(self, path, vfstype):
- self.path = path
+ vfs = vfstype(path)
+ self.path = vfs.base
self.createmode = _calcmode(path)
- vfs = vfstype(self.path)
vfs.createmode = self.createmode
self.vfs = scmutil.filtervfs(vfs, encodedir)
self.opener = self.vfs
@@ -342,9 +342,9 @@
class encodedstore(basicstore):
def __init__(self, path, vfstype):
- self.path = path + '/store'
+ vfs = vfstype(path + '/store')
+ self.path = vfs.base
self.createmode = _calcmode(self.path)
- vfs = vfstype(self.path)
vfs.createmode = self.createmode
self.vfs = scmutil.filtervfs(vfs, encodefilename)
self.opener = self.vfs
@@ -448,10 +448,10 @@
else:
encode = _plainhybridencode
self.encode = encode
- self.path = path + '/store'
+ vfs = vfstype(path + '/store')
+ self.path = vfs.base
self.pathsep = self.path + '/'
self.createmode = _calcmode(self.path)
- vfs = vfstype(self.path)
vfs.createmode = self.createmode
fnc = fncache(vfs)
self.fncache = fnc