mercurial/localrepo.py
changeset 17137 b090601a80d1
parent 17075 28ed1c4511ce
child 17139 ad1b5e070f16
equal deleted inserted replaced
17136:de8173d0c326 17137:b090601a80d1
    27     capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey',
    27     capabilities = set(('lookup', 'changegroupsubset', 'branchmap', 'pushkey',
    28                         'known', 'getbundle'))
    28                         'known', 'getbundle'))
    29     supportedformats = set(('revlogv1', 'generaldelta'))
    29     supportedformats = set(('revlogv1', 'generaldelta'))
    30     supported = supportedformats | set(('store', 'fncache', 'shared',
    30     supported = supportedformats | set(('store', 'fncache', 'shared',
    31                                         'dotencode'))
    31                                         'dotencode'))
       
    32     openerreqs = set(('revlogv1', 'generaldelta'))
       
    33     requirements = ['revlogv1']
       
    34 
       
    35     def _baserequirements(self, create):
       
    36         return self.requirements[:]
    32 
    37 
    33     def __init__(self, baseui, path=None, create=False):
    38     def __init__(self, baseui, path=None, create=False):
    34         repo.repository.__init__(self)
    39         repo.repository.__init__(self)
    35         self.root = os.path.realpath(util.expandpath(path))
    40         self.root = os.path.realpath(util.expandpath(path))
    36         self.path = os.path.join(self.root, ".hg")
    41         self.path = os.path.join(self.root, ".hg")
    54         if not os.path.isdir(self.path):
    59         if not os.path.isdir(self.path):
    55             if create:
    60             if create:
    56                 if not os.path.exists(path):
    61                 if not os.path.exists(path):
    57                     util.makedirs(path)
    62                     util.makedirs(path)
    58                 util.makedir(self.path, notindexed=True)
    63                 util.makedir(self.path, notindexed=True)
    59                 requirements = ["revlogv1"]
    64                 requirements = self._baserequirements(create)
    60                 if self.ui.configbool('format', 'usestore', True):
    65                 if self.ui.configbool('format', 'usestore', True):
    61                     os.mkdir(os.path.join(self.path, "store"))
    66                     os.mkdir(os.path.join(self.path, "store"))
    62                     requirements.append("store")
    67                     requirements.append("store")
    63                     if self.ui.configbool('format', 'usefncache', True):
    68                     if self.ui.configbool('format', 'usefncache', True):
    64                         requirements.append("fncache")
    69                         requirements.append("fncache")
   118         # Maps a property name to its util.filecacheentry
   123         # Maps a property name to its util.filecacheentry
   119         self._filecache = {}
   124         self._filecache = {}
   120 
   125 
   121     def _applyrequirements(self, requirements):
   126     def _applyrequirements(self, requirements):
   122         self.requirements = requirements
   127         self.requirements = requirements
   123         openerreqs = set(('revlogv1', 'generaldelta'))
       
   124         self.sopener.options = dict((r, 1) for r in requirements
   128         self.sopener.options = dict((r, 1) for r in requirements
   125                                            if r in openerreqs)
   129                                            if r in self.openerreqs)
   126 
   130 
   127     def _writerequirements(self):
   131     def _writerequirements(self):
   128         reqfile = self.opener("requires", "w")
   132         reqfile = self.opener("requires", "w")
   129         for r in self.requirements:
   133         for r in self.requirements:
   130             reqfile.write("%s\n" % r)
   134             reqfile.write("%s\n" % r)