~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-02-04 18:06:54 UTC
  • mfrom: (5642.2.2 extra-branch-formats)
  • Revision ID: pqm@pqm.ubuntu.com-20110204180654-fmof6mad6s3aeam1
(jelmer) Allow the registration of "extra" branch formats in the branch
 format registry. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1552
1552
    _formats = {}
1553
1553
    """The known formats."""
1554
1554
 
 
1555
    _extra_formats = []
 
1556
    """Extra formats that can not be part of a metadir."""
 
1557
 
1555
1558
    can_set_append_revisions_only = True
1556
1559
 
1557
1560
    def __eq__(self, other):
1592
1595
            if isinstance(fmt, MetaDirBranchFormatFactory):
1593
1596
                fmt = fmt()
1594
1597
            result.append(fmt)
1595
 
        return result
 
1598
        return result + klass._extra_formats
1596
1599
 
1597
1600
    def get_reference(self, a_bzrdir, name=None):
1598
1601
        """Get the target reference of the branch in a_bzrdir.
1738
1741
        raise NotImplementedError(self.open)
1739
1742
 
1740
1743
    @classmethod
 
1744
    def register_extra_format(klass, format):
 
1745
        """Register a branch format that can not be part of a metadir.
 
1746
 
 
1747
        This is mainly useful to allow custom branch formats, such as
 
1748
        older Bazaar formats and foreign formats, to be tested
 
1749
        """
 
1750
        klass._extra_formats.append(format)
 
1751
        network_format_registry.register(
 
1752
            format.network_name(), format.__class__)
 
1753
 
 
1754
    @classmethod
1741
1755
    def register_format(klass, format):
1742
1756
        """Register a metadir format.
1743
1757
        
1769
1783
    def unregister_format(klass, format):
1770
1784
        del klass._formats[format.get_format_string()]
1771
1785
 
 
1786
    @classmethod
 
1787
    def unregister_extra_format(klass, format):
 
1788
        klass._extra_formats.remove(format)
 
1789
 
1772
1790
    def __str__(self):
1773
1791
        return self.get_format_description().rstrip()
1774
1792
 
2379
2397
BranchFormat.register_format(__format7)
2380
2398
BranchFormat.register_format(__format8)
2381
2399
BranchFormat.set_default_format(__format7)
2382
 
_legacy_formats = [BzrBranchFormat4(),
2383
 
    ]
2384
 
network_format_registry.register(
2385
 
    _legacy_formats[0].network_name(), _legacy_formats[0].__class__)
 
2400
BranchFormat.register_extra_format(BzrBranchFormat4())
2386
2401
 
2387
2402
 
2388
2403
class BranchWriteLockResult(LogicalLockResult):