~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bzrdir.py

  • Committer: Jelmer Vernooij
  • Date: 2011-03-10 13:29:54 UTC
  • mfrom: (5712.4.3 bzrdir-weave)
  • mto: This revision was merged to the branch mainline in revision 5718.
  • Revision ID: jelmer@samba.org-20110310132954-lgdypdwpu99vyv0q
Merge weave-bzrdir branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
 
73
73
from bzrlib import (
74
74
    hooks,
 
75
    registry,
75
76
    )
76
77
from bzrlib.symbol_versioning import (
77
78
    deprecated_in,
1203
1204
class BzrProber(controldir.Prober):
1204
1205
    """Prober for formats that use a .bzr/ control directory."""
1205
1206
 
1206
 
    _formats = {}
 
1207
    formats = registry.FormatRegistry(controldir.network_format_registry)
1207
1208
    """The known .bzr formats."""
1208
1209
 
1209
1210
    @classmethod
 
1211
    @deprecated_method(deprecated_in((2, 4, 0)))
1210
1212
    def register_bzrdir_format(klass, format):
1211
 
        klass._formats[format.get_format_string()] = format
 
1213
        klass.formats.register(format.get_format_string(), format)
1212
1214
 
1213
1215
    @classmethod
 
1216
    @deprecated_method(deprecated_in((2, 4, 0)))
1214
1217
    def unregister_bzrdir_format(klass, format):
1215
 
        del klass._formats[format.get_format_string()]
 
1218
        klass.formats.remove(format.get_format_string())
1216
1219
 
1217
1220
    @classmethod
1218
1221
    def probe_transport(klass, transport):
1222
1225
        except errors.NoSuchFile:
1223
1226
            raise errors.NotBranchError(path=transport.base)
1224
1227
        try:
1225
 
            return klass._formats[format_string]
 
1228
            return klass.formats.get(format_string)
1226
1229
        except KeyError:
1227
1230
            raise errors.UnknownFormatError(format=format_string, kind='bzrdir')
1228
1231
 
1458
1461
 
1459
1462
    @classmethod
1460
1463
    def register_format(klass, format):
1461
 
        BzrProber.register_bzrdir_format(format)
1462
 
        # bzr native formats have a network name of their format string.
1463
 
        controldir.network_format_registry.register(format.get_format_string(), format.__class__)
 
1464
        """Register a new BzrDir format.
 
1465
        """
 
1466
        BzrProber.formats.register(format.get_format_string(), format)
1464
1467
        controldir.ControlDirFormat.register_format(format)
1465
1468
 
 
1469
    @classmethod
 
1470
    def register_lazy_format(klass, format_string, module_name, member_name):
 
1471
        """Lazily register a new BzrDir format.
 
1472
 
 
1473
        :param format_string: Format string
 
1474
        :param module_name: Name of module with the BzrDirFormat subclass
 
1475
        :param member_name: Class name of the BzrDirFormat
 
1476
        """
 
1477
        BzrProber.formats.register_lazy(format_string, module_name,
 
1478
            member_name)
 
1479
        controldir.ControlDirFormat.register_lazy_format(
 
1480
            module_name, member_name)
 
1481
 
1466
1482
    def _supply_sub_formats_to(self, other_format):
1467
1483
        """Give other_format the same values for sub formats as this has.
1468
1484
 
1477
1493
 
1478
1494
    @classmethod
1479
1495
    def unregister_format(klass, format):
1480
 
        BzrProber.unregister_bzrdir_format(format)
 
1496
        BzrProber.formats.remove(format.get_format_string())
1481
1497
        controldir.ControlDirFormat.unregister_format(format)
1482
 
        controldir.network_format_registry.remove(format.get_format_string())
 
1498
 
 
1499
    @classmethod
 
1500
    def unregister_lazy_format(klass, format_string, module_name, member_name):
 
1501
        BzrProber.formats.remove(format_string)
 
1502
        controldir.ControlDirFormat.unregister_lazy_format(
 
1503
            module_name, member_name)
1483
1504
 
1484
1505
 
1485
1506
class BzrDirMetaFormat1(BzrDirFormat):