622
622
raise NotImplementedError(self.clone_on_transport)
625
class ControlComponentFormat(object):
626
"""A component that can live inside of a .bzr meta directory."""
628
def get_format_string(self):
629
"""Return the format of this format, if usable in meta directories."""
630
raise NotImplementedError(self.get_format_string)
632
def get_format_description(self):
633
"""Return the short description for this format."""
634
raise NotImplementedError(self.get_format_description)
637
class ControlComponentFormatRegistry(registry.FormatRegistry):
638
"""A registry for control components (branch, workingtree, repository)."""
640
def __init__(self, other_registry=None):
641
super(ControlComponentFormatRegistry, self).__init__(other_registry)
642
self._extra_formats = []
644
def register(self, format):
645
"""Register a new format."""
646
super(ControlComponentFormatRegistry, self).register(
647
format.get_format_string(), format)
649
def remove(self, format):
650
"""Remove a registered format."""
651
super(ControlComponentFormatRegistry, self).remove(
652
format.get_format_string())
654
def register_extra(self, format):
655
"""Register a format that can not be used in a metadir.
657
This is mainly useful to allow custom repository formats, such as older
658
Bazaar formats and foreign formats, to be tested.
660
self._extra_formats.append(registry._ObjectGetter(format))
662
def remove_extra(self, format):
663
"""Remove an extra format.
665
self._extra_formats.remove(registry._ObjectGetter(format))
667
def register_extra_lazy(self, module_name, member_name):
668
"""Register a format lazily.
670
self._extra_formats.append(
671
registry._LazyObjectGetter(module_name, member_name))
673
def _get_extra(self):
674
"""Return all "extra" formats, not usable in meta directories."""
676
for getter in self._extra_formats:
684
"""Return all formats, even those not usable in metadirs.
687
for name in self.keys():
692
return result + self._get_extra()
625
695
class ControlDirFormat(object):
626
696
"""An encapsulation of the initialization and open routines for a format.