~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/reconcile.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-03-26 03:06:52 UTC
  • mfrom: (3287.5.10 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080326030652-vgwdkwda9mi8s200
Deprecate VersionedFile.get_parents. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
228
228
                parents.append(parent)
229
229
            else:
230
230
                mutter('found ghost %s', parent)
231
 
        self._rev_graph[rev_id] = parents   
 
231
        self._rev_graph[rev_id] = parents
232
232
        if self._parents_are_inconsistent(rev_id, parents):
233
233
            self.inconsistent_parents += 1
234
234
            mutter('Inconsistent inventory parents: id {%s} '
235
235
                   'inventory claims %r, '
236
236
                   'available parents are %r, '
237
237
                   'unavailable parents are %r',
238
 
                   rev_id, 
239
 
                   set(self.inventory.get_parents(rev_id)),
 
238
                   rev_id,
 
239
                   set(self.inventory.get_parent_map([rev_id])[rev_id]),
240
240
                   set(parents),
241
241
                   set(rev.parent_ids).difference(set(parents)))
242
242
 
248
248
        differences.
249
249
        Otherwise only the ghost differences are evaluated.
250
250
        """
251
 
        weave_parents = self.inventory.get_parents(rev_id)
 
251
        weave_parents = self.inventory.get_parent_map([rev_id])[rev_id]
252
252
        weave_missing_old_ghosts = set(weave_parents) != set(parents)
253
253
        first_parent_is_wrong = (
254
254
            len(weave_parents) and len(parents) and
333
333
 
334
334
        # we have topological order of revisions and non ghost parents ready.
335
335
        self._setup_steps(len(self.revisions))
336
 
        for rev_id in TopoSorter(self.revisions.get_graph().items()).iter_topo_order():
337
 
            parents = self.revisions.get_parents(rev_id)
338
 
            # double check this really is in topological order.
339
 
            unavailable = [p for p in parents if p not in new_inventory_vf]
 
336
        graph = self.revisions.get_graph()
 
337
        parent_map = self.revisions.get_parent_map(graph.keys())
 
338
        for rev_id in TopoSorter(graph.items()).iter_topo_order():
 
339
            parents = parent_map[rev_id]
 
340
            # double check this really is in topological order, ignoring existing ghosts.
 
341
            unavailable = [p for p in parents if p not in new_inventory_vf and
 
342
                p in self.revisions]
340
343
            assert len(unavailable) == 0
341
344
            # this entry has all the non ghost parents in the inventory
342
345
            # file already.
343
346
            self._reweave_step('adding inventories')
344
347
            # ugly but needed, weaves are just way tooooo slow else.
345
 
            new_inventory_vf.add_lines(rev_id, parents, self.inventory.get_lines(rev_id))
 
348
            new_inventory_vf.add_lines_with_ghosts(rev_id, parents,
 
349
                self.inventory.get_lines(rev_id))
346
350
 
347
351
        # if this worked, the set of new_inventory_vf.names should equal
348
352
        # self.pending
412
416
            elif version in versions_with_bad_parents:
413
417
                parents = versions_with_bad_parents[version][1]
414
418
            else:
415
 
                parents = vf.get_parents(version)
 
419
                parents = vf.get_parent_map([version])[version]
416
420
            new_parents[version] = parents
417
421
        if not len(new_parents):
418
422
            # No used versions, remove the VF.