/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/pack_repo.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-09-07 04:14:59 UTC
  • mfrom: (4675.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090907041459-so0m9vkp5j6mgir0
(robertc) Merge 2.0 to bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2063
2063
            self._remove_pack_indices(resumed_pack)
2064
2064
        del self._resumed_packs[:]
2065
2065
 
 
2066
    def _check_new_inventories(self):
 
2067
        """Detect missing inventories in this write group.
 
2068
 
 
2069
        :returns: set of missing keys.  Note that not every missing key is
 
2070
            guaranteed to be reported.
 
2071
        """
 
2072
        # The base implementation does no checks.  GCRepositoryPackCollection
 
2073
        # overrides this.
 
2074
        return set()
 
2075
        
2066
2076
    def _commit_write_group(self):
2067
2077
        all_missing = set()
2068
2078
        for prefix, versioned_file in (
2077
2087
            raise errors.BzrCheckError(
2078
2088
                "Repository %s has missing compression parent(s) %r "
2079
2089
                 % (self.repo, sorted(all_missing)))
 
2090
        all_missing = self._check_new_inventories()
 
2091
        if all_missing:
 
2092
            raise errors.BzrCheckError(
 
2093
                "Repository %s missing keys for new revisions %r "
 
2094
                 % (self.repo, sorted(all_missing)))
2080
2095
        self._remove_pack_indices(self._new_pack)
2081
 
        should_autopack = False
 
2096
        any_new_content = False
2082
2097
        if self._new_pack.data_inserted():
2083
2098
            # get all the data to disk and read to use
2084
2099
            self._new_pack.finish()
2085
2100
            self.allocate(self._new_pack)
2086
2101
            self._new_pack = None
2087
 
            should_autopack = True
 
2102
            any_new_content = True
2088
2103
        else:
2089
2104
            self._new_pack.abort()
2090
2105
            self._new_pack = None
2095
2110
            self._remove_pack_from_memory(resumed_pack)
2096
2111
            resumed_pack.finish()
2097
2112
            self.allocate(resumed_pack)
2098
 
            should_autopack = True
 
2113
            any_new_content = True
2099
2114
        del self._resumed_packs[:]
2100
 
        if should_autopack:
2101
 
            if not self.autopack():
 
2115
        if any_new_content:
 
2116
            result = self.autopack()
 
2117
            if not result:
2102
2118
                # when autopack takes no steps, the names list is still
2103
2119
                # unsaved.
2104
2120
                return self._save_pack_names()
 
2121
            return result
2105
2122
        return []
2106
2123
 
2107
2124
    def _suspend_write_group(self):
2222
2239
                    % (self._format, self.bzrdir.transport.base))
2223
2240
 
2224
2241
    def _abort_write_group(self):
2225
 
        self.revisions._index._key_dependencies.refs.clear()
 
2242
        self.revisions._index._key_dependencies.clear()
2226
2243
        self._pack_collection._abort_write_group()
2227
2244
 
2228
2245
    def _get_source(self, to_format):
2242
2259
        self._pack_collection._start_write_group()
2243
2260
 
2244
2261
    def _commit_write_group(self):
2245
 
        self.revisions._index._key_dependencies.refs.clear()
2246
 
        return self._pack_collection._commit_write_group()
 
2262
        hint = self._pack_collection._commit_write_group()
 
2263
        self.revisions._index._key_dependencies.clear()
 
2264
        return hint
2247
2265
 
2248
2266
    def suspend_write_group(self):
2249
2267
        # XXX check self._write_group is self.get_transaction()?
2250
2268
        tokens = self._pack_collection._suspend_write_group()
2251
 
        self.revisions._index._key_dependencies.refs.clear()
 
2269
        self.revisions._index._key_dependencies.clear()
2252
2270
        self._write_group = None
2253
2271
        return tokens
2254
2272