~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bzrdir.py

Merge up bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
81
81
from bzrlib.symbol_versioning import (
82
82
    deprecated_function,
83
83
    deprecated_method,
84
 
    zero_ninetyone,
85
84
    )
86
85
 
87
86
 
435
434
        return result
436
435
 
437
436
    @staticmethod
438
 
    @deprecated_function(zero_ninetyone)
439
 
    def create_repository(base, shared=False, format=None):
440
 
        """Create a new BzrDir and Repository at the url 'base'.
441
 
 
442
 
        If no format is supplied, this will default to the current default
443
 
        BzrDirFormat by default, and use whatever repository format that that
444
 
        uses for bzrdirformat.create_repository.
445
 
 
446
 
        :param shared: Create a shared repository rather than a standalone
447
 
                       repository.
448
 
        The Repository object is returned.
449
 
 
450
 
        This must be overridden as an instance method in child classes, where
451
 
        it should take no parameters and construct whatever repository format
452
 
        that child class desires.
453
 
 
454
 
        This method is deprecated, please call create_repository on a bzrdir
455
 
        instance instead.
456
 
        """
457
 
        bzrdir = BzrDir.create(base, format)
458
 
        return bzrdir.create_repository(shared)
459
 
 
460
 
    @staticmethod
461
437
    def create_standalone_workingtree(base, format=None):
462
438
        """Create a new BzrDir, WorkingTree, Branch and Repository at 'base'.
463
439
 
1040
1016
    def __init__(self, _transport, _format):
1041
1017
        """See BzrDir.__init__."""
1042
1018
        super(BzrDirPreSplitOut, self).__init__(_transport, _format)
1043
 
        assert self._format._lock_class == lockable_files.TransportLock
1044
 
        assert self._format._lock_file_name == 'branch-lock'
1045
1019
        self._control_files = lockable_files.LockableFiles(
1046
1020
                                            self.get_branch_transport(None),
1047
1021
                                            self._format._lock_file_name,
1633
1607
        klass._control_server_formats.append(format)
1634
1608
 
1635
1609
    @classmethod
1636
 
    @symbol_versioning.deprecated_method(symbol_versioning.zero_fourteen)
1637
 
    def set_default_format(klass, format):
1638
 
        klass._set_default_format(format)
1639
 
 
1640
 
    @classmethod
1641
1610
    def _set_default_format(klass, format):
1642
1611
        """Set default format (for testing behavior of defaults only)"""
1643
1612
        klass._default_format = format
1648
1617
 
1649
1618
    @classmethod
1650
1619
    def unregister_format(klass, format):
1651
 
        assert klass._formats[format.get_format_string()] is format
1652
1620
        del klass._formats[format.get_format_string()]
1653
1621
 
1654
1622
    @classmethod
2078
2046
            self.revisions[rev_id] = rev
2079
2047
 
2080
2048
    def _load_old_inventory(self, rev_id):
2081
 
        assert rev_id not in self.converted_revs
2082
2049
        old_inv_xml = self.branch.repository.inventory_store.get(rev_id).read()
2083
2050
        inv = xml4.serializer_v4.read_inventory_from_string(old_inv_xml)
2084
2051
        inv.revision_id = rev_id
2085
2052
        rev = self.revisions[rev_id]
2086
 
        if rev.inventory_sha1:
2087
 
            assert rev.inventory_sha1 == sha_string(old_inv_xml), \
2088
 
                'inventory sha mismatch for {%s}' % rev_id
2089
2053
        return inv
2090
2054
 
2091
2055
    def _load_updated_inventory(self, rev_id):
2092
 
        assert rev_id in self.converted_revs
2093
2056
        inv_xml = self.inv_weave.get_text(rev_id)
2094
2057
        inv = xml5.serializer_v5.read_inventory_from_string(inv_xml, rev_id)
2095
2058
        return inv
2105
2068
        self.converted_revs.add(rev_id)
2106
2069
 
2107
2070
    def _store_new_inv(self, rev, inv, present_parents):
2108
 
        # the XML is now updated with text versions
2109
 
        if __debug__:
2110
 
            entries = inv.iter_entries()
2111
 
            entries.next()
2112
 
            for path, ie in entries:
2113
 
                assert getattr(ie, 'revision', None) is not None, \
2114
 
                    'no revision on {%s} in {%s}' % \
2115
 
                    (file_id, rev.revision_id)
2116
2071
        new_inv_xml = xml5.serializer_v5.write_inventory_to_string(inv)
2117
2072
        new_inv_sha1 = sha_string(new_inv_xml)
2118
2073
        self.inv_weave.add_lines(rev.revision_id,
2147
2102
            self.text_weaves[file_id] = w
2148
2103
        text_changed = False
2149
2104
        parent_candiate_entries = ie.parent_candidates(parent_invs)
2150
 
        for old_revision in parent_candiate_entries.keys():
2151
 
            # if this fails, its a ghost ?
2152
 
            assert old_revision in self.converted_revs, \
2153
 
                "Revision {%s} not in converted_revs" % old_revision
2154
2105
        heads = graph.Graph(self).heads(parent_candiate_entries.keys())
2155
2106
        # XXX: Note that this is unordered - and this is tolerable because 
2156
2107
        # the previous code was also unordered.
2158
2109
            in heads)
2159
2110
        self.snapshot_ie(previous_entries, ie, w, rev_id)
2160
2111
        del ie.text_id
2161
 
        assert getattr(ie, 'revision', None) is not None
2162
2112
 
2163
2113
    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
2164
2114
    def get_parents(self, revision_ids):
2187
2137
        if ie.has_text():
2188
2138
            text = self.branch.repository.weave_store.get(ie.text_id)
2189
2139
            file_lines = text.readlines()
2190
 
            assert sha_strings(file_lines) == ie.text_sha1
2191
 
            assert sum(map(len, file_lines)) == ie.text_size
2192
2140
            w.add_lines(rev_id, previous_revisions, file_lines)
2193
2141
            self.text_count += 1
2194
2142
        else:
2469
2417
        client = _SmartClient(client_medium, transport.base)
2470
2418
        path = client.remote_path_from_transport(transport)
2471
2419
        response = client.call('BzrDirFormat.initialize', path)
2472
 
        assert response[0] in ('ok', ), 'unexpected response code %s' % (response,)
 
2420
        if response[0] != 'ok':
 
2421
            raise errors.SmartProtocolError('unexpected response code %s' % (response,))
2473
2422
        return remote.RemoteBzrDir(transport)
2474
2423
 
2475
2424
    def _open(self, transport):
2597
2546
            self.remove('default')
2598
2547
        self.set_default(key)
2599
2548
        format = self.get('default')()
2600
 
        assert isinstance(format, BzrDirMetaFormat1)
2601
2549
 
2602
2550
    def make_bzrdir(self, key):
2603
2551
        return self.get(key)()