2922
class RepositoryFormatRegistry(registry.FormatRegistry):
2922
class RepositoryFormatRegistry(controldir.ControlComponentFormatRegistry):
2923
2923
"""Repository format registry."""
2925
def __init__(self, other_registry=None):
2926
super(RepositoryFormatRegistry, self).__init__(other_registry)
2927
self._extra_formats = []
2929
def register(self, format):
2930
"""Register a new repository format."""
2931
super(RepositoryFormatRegistry, self).register(
2932
format.get_format_string(), format)
2934
def remove(self, format):
2935
"""Remove a registered repository format."""
2936
super(RepositoryFormatRegistry, self).remove(
2937
format.get_format_string())
2939
def register_extra(self, format):
2940
"""Register a repository format that can not be used in a metadir.
2942
This is mainly useful to allow custom repository formats, such as older
2943
Bazaar formats and foreign formats, to be tested.
2945
self._extra_formats.append(registry._ObjectGetter(format))
2947
def remove_extra(self, format):
2948
"""Remove an extra repository format.
2950
self._extra_formats.remove(registry._ObjectGetter(format))
2952
def register_extra_lazy(self, module_name, member_name):
2953
"""Register a repository format lazily.
2955
self._extra_formats.append(
2956
registry._LazyObjectGetter(module_name, member_name))
2958
2925
def get_default(self):
2959
2926
"""Return the current default format."""
2960
2927
from bzrlib import bzrdir
2961
2928
return bzrdir.format_registry.make_bzrdir('default').repository_format
2963
def _get_extra(self):
2965
for getter in self._extra_formats:
2966
f = getter.get_obj()
2973
"""Return all repository formats, even those not usable in metadirs.
2975
return [self.get(k) for k in self.keys()] + self._get_extra()
2978
2931
network_format_registry = registry.FormatRegistry()
2979
2932
"""Registry of formats indexed by their network name.