2859
2859
return path[:-len(suffix)]
2862
class WorkingTreeFormatRegistry(registry.FormatRegistry):
2862
class WorkingTreeFormatRegistry(controldir.ControlComponentFormatRegistry):
2863
2863
"""Registry for working tree formats."""
2865
2865
def __init__(self, other_registry=None):
2866
2866
super(WorkingTreeFormatRegistry, self).__init__(other_registry)
2867
self._extra_formats = []
2868
2867
self._default_format = None
2870
def register(self, format):
2871
"""Register a new repository format."""
2872
super(WorkingTreeFormatRegistry, self).register(
2873
format.get_format_string(), format)
2875
def remove(self, format):
2876
"""Remove a registered repository format."""
2877
super(WorkingTreeFormatRegistry, self).remove(format.get_format_string())
2879
def register_extra(self, format):
2880
"""Register a repository format that can not be used in a metadir.
2882
This is mainly useful to allow custom repository formats, such as older
2883
Bazaar formats and foreign formats, to be tested.
2885
self._extra_formats.append(registry._ObjectGetter(format))
2887
def remove_extra(self, format):
2888
"""Remove an extra repository format.
2890
self._extra_formats.remove(registry._ObjectGetter(format))
2892
def register_extra_lazy(self, module_name, member_name):
2893
"""Register a repository format lazily.
2895
self._extra_formats.append(
2896
registry._LazyObjectGetter(module_name, member_name))
2898
2869
def get_default(self):
2899
2870
"""Return the current default format."""
2900
2871
return self._default_format
2902
2873
def set_default(self, format):
2903
2874
self._default_format = format
2905
def _get_extra(self):
2907
for getter in self._extra_formats:
2908
f = getter.get_obj()
2915
"""Return all repository formats, even those not usable in metadirs.
2917
return [self.get(k) for k in self.keys()] + self._get_extra()
2920
2877
format_registry = WorkingTreeFormatRegistry()
2923
class WorkingTreeFormat(object):
2880
class WorkingTreeFormat(controldir.ControlComponentFormat):
2924
2881
"""An encapsulation of the initialization and open routines for a format.
2926
2883
Formats provide three things: