tests/hghave.py
changeset 37338 cbc4425e81b5
parent 36942 bf73012877a4
child 37342 4e6a6d0dccee
equal deleted inserted replaced
37337:d257c5f2a940 37338:cbc4425e81b5
   715         from mercurial import policy
   715         from mercurial import policy
   716         bdiff = policy.importmod('bdiff')
   716         bdiff = policy.importmod('bdiff')
   717         return bdiff.xdiffblocks(b'', b'') == [(0, 0, 0, 0)]
   717         return bdiff.xdiffblocks(b'', b'') == [(0, 0, 0, 0)]
   718     except (ImportError, AttributeError):
   718     except (ImportError, AttributeError):
   719         return False
   719         return False
       
   720 
       
   721 def getrepofeatures():
       
   722     """Obtain set of repository features in use.
       
   723 
       
   724     HGREPOFEATURES can be used to define or remove features. It contains
       
   725     a space-delimited list of feature strings. Strings beginning with ``-``
       
   726     mean to remove.
       
   727     """
       
   728     # Default list provided by core.
       
   729     features = {
       
   730         'revlogstore',
       
   731     }
       
   732 
       
   733     # Features that imply other features.
       
   734     implies = {
       
   735         'simplestore': ['-revlogstore'],
       
   736     }
       
   737 
       
   738     for override in os.environ.get('HGREPOFEATURES', '').split(' '):
       
   739         if not override:
       
   740             continue
       
   741 
       
   742         if override.startswith('-'):
       
   743             if override[1:] in features:
       
   744                 features.remove(override[1:])
       
   745         else:
       
   746             features.add(override)
       
   747 
       
   748             for imply in implies.get(override, []):
       
   749                 if imply.startswith('-'):
       
   750                     if imply[1:] in features:
       
   751                         features.remove(imply[1:])
       
   752                 else:
       
   753                     features.add(imply)
       
   754 
       
   755     return features
       
   756 
       
   757 @check('reporevlogstore', 'repository using the default revlog store')
       
   758 def has_reporevlogstore():
       
   759     return 'revlogstore' in getrepofeatures()
       
   760 
       
   761 @check('reposimplestore', 'repository using simple storage extension')
       
   762 def has_reposimplestore():
       
   763     return 'simplestore' in getrepofeatures()