mercurial/localrepo.py
changeset 37135 ecac0006b90e
parent 37120 a8a902d7176e
child 37137 db90a5793103
equal deleted inserted replaced
37134:6890b7e991a4 37135:ecac0006b90e
   307 
   307 
   308 # Increment the sub-version when the revlog v2 format changes to lock out old
   308 # Increment the sub-version when the revlog v2 format changes to lock out old
   309 # clients.
   309 # clients.
   310 REVLOGV2_REQUIREMENT = 'exp-revlogv2.0'
   310 REVLOGV2_REQUIREMENT = 'exp-revlogv2.0'
   311 
   311 
       
   312 # Functions receiving (ui, features) that extensions can register to impact
       
   313 # the ability to load repositories with custom requirements. Only
       
   314 # functions defined in loaded extensions are called.
       
   315 #
       
   316 # The function receives a set of requirement strings that the repository
       
   317 # is capable of opening. Functions will typically add elements to the
       
   318 # set to reflect that the extension knows how to handle that requirements.
       
   319 featuresetupfuncs = set()
       
   320 
   312 class localrepository(object):
   321 class localrepository(object):
   313 
   322 
   314     # obsolete experimental requirements:
   323     # obsolete experimental requirements:
   315     #  - manifestv2: An experimental new manifest format that allowed
   324     #  - manifestv2: An experimental new manifest format that allowed
   316     #    for stem compression of long paths. Experiment ended up not
   325     #    for stem compression of long paths. Experiment ended up not
   333     openerreqs = {
   342     openerreqs = {
   334         'revlogv1',
   343         'revlogv1',
   335         'generaldelta',
   344         'generaldelta',
   336         'treemanifest',
   345         'treemanifest',
   337     }
   346     }
   338 
       
   339     # a list of (ui, featureset) functions.
       
   340     # only functions defined in module of enabled extensions are invoked
       
   341     featuresetupfuncs = set()
       
   342 
   347 
   343     # list of prefix for file which can be written without 'wlock'
   348     # list of prefix for file which can be written without 'wlock'
   344     # Extensions should extend this list when needed
   349     # Extensions should extend this list when needed
   345     _wlockfreeprefix = {
   350     _wlockfreeprefix = {
   346         # We migh consider requiring 'wlock' for the next
   351         # We migh consider requiring 'wlock' for the next
   397             self.ui.readconfig(self.vfs.join("hgrc"), self.root)
   402             self.ui.readconfig(self.vfs.join("hgrc"), self.root)
   398             self._loadextensions()
   403             self._loadextensions()
   399         except IOError:
   404         except IOError:
   400             pass
   405             pass
   401 
   406 
   402         if self.featuresetupfuncs:
   407         if featuresetupfuncs:
   403             self.supported = set(self._basesupported) # use private copy
   408             self.supported = set(self._basesupported) # use private copy
   404             extmods = set(m.__name__ for n, m
   409             extmods = set(m.__name__ for n, m
   405                           in extensions.extensions(self.ui))
   410                           in extensions.extensions(self.ui))
   406             for setupfunc in self.featuresetupfuncs:
   411             for setupfunc in featuresetupfuncs:
   407                 if setupfunc.__module__ in extmods:
   412                 if setupfunc.__module__ in extmods:
   408                     setupfunc(self.ui, self.supported)
   413                     setupfunc(self.ui, self.supported)
   409         else:
   414         else:
   410             self.supported = self._basesupported
   415             self.supported = self._basesupported
   411         color.setup(self.ui)
   416         color.setup(self.ui)