~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/reconcile.py

Merge from integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
120
120
        for rev_id in self.pending:
121
121
            # put a revision into the graph.
122
122
            self._graph_revision(rev_id)
123
 
        # we gc unreferenced inventories too
124
 
        self.garbage_inventories = len(self.inventory.versions()) \
125
 
                                   - len(self._rev_graph)
126
 
 
 
123
        self._check_garbage_inventories()
127
124
        if not self.inconsistent_parents and not self.garbage_inventories:
128
125
            self.pb.note('Inventory ok.')
129
126
            return
176
173
        self._rev_graph[rev_id] = parents   
177
174
        if set(self.inventory.get_parents(rev_id)) != set(parents):
178
175
            self.inconsistent_parents += 1
 
176
            mutter('Inconsistent inventory parents: id {%s} '
 
177
                   'inventory claims %r, '
 
178
                   'available parents are %r, '
 
179
                   'unavailable parents are %r',
 
180
                   rev_id, 
 
181
                   set(self.inventory.get_parents(rev_id)),
 
182
                   set(parents),
 
183
                   set(rev.parent_ids).difference(set(parents)))
 
184
 
 
185
    def _check_garbage_inventories(self):
 
186
        """Check for garbage inventories which we cannot trust
 
187
 
 
188
        We cant trust them because their pre-requisite file data may not
 
189
        be present - all we know is that their revision was not installed.
 
190
        """
 
191
        inventories = set(self.inventory.versions())
 
192
        revisions = set(self._rev_graph.keys())
 
193
        garbage = inventories.difference(revisions)
 
194
        self.garbage_inventories = len(garbage)
 
195
        for revision_id in garbage:
 
196
            mutter('Garbage inventory {%s} found.', revision_id)
179
197
 
180
198
    def _parent_is_available(self, parent):
181
199
        """True if parent is a fully available revision