store: initialize vfs field first to use it for initialization of others
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Tue, 09 Oct 2012 01:41:55 +0900
changeset 17724 bf4b72d8dd4d
parent 17723 ab23768746fd
child 17725 ffd589d4b785
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.
mercurial/store.py
--- 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