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() |