~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: 2009-08-17 18:18:18 UTC
  • mfrom: (4618.2.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090817181818-6ks7pxgiwpqvsd3l
(vila) Make selftest --parallel=fork work again

Show diffs side-by-side

added added

removed removed

Lines of Context:
446
446
        # start_revision_id.
447
447
        if self._merge_sorted_revisions_cache is None:
448
448
            last_revision = self.last_revision()
449
 
            last_key = (last_revision,)
450
 
            known_graph = self.repository.revisions.get_known_graph_ancestry(
451
 
                [last_key])
452
 
            self._merge_sorted_revisions_cache = known_graph.merge_sort(
453
 
                last_key)
 
449
            graph = self.repository.get_graph()
 
450
            parent_map = dict(((key, value) for key, value in
 
451
                     graph.iter_ancestry([last_revision]) if value is not None))
 
452
            revision_graph = repository._strip_NULL_ghosts(parent_map)
 
453
            revs = tsort.merge_sort(revision_graph, last_revision, None,
 
454
                generate_revno=True)
 
455
            # Drop the sequence # before caching
 
456
            self._merge_sorted_revisions_cache = [r[1:] for r in revs]
 
457
 
454
458
        filtered = self._filter_merge_sorted_revisions(
455
459
            self._merge_sorted_revisions_cache, start_revision_id,
456
460
            stop_revision_id, stop_rule)
466
470
        """Iterate over an inclusive range of sorted revisions."""
467
471
        rev_iter = iter(merge_sorted_revisions)
468
472
        if start_revision_id is not None:
469
 
            for node in rev_iter:
470
 
                rev_id = node.key[-1]
 
473
            for rev_id, depth, revno, end_of_merge in rev_iter:
471
474
                if rev_id != start_revision_id:
472
475
                    continue
473
476
                else:
474
477
                    # The decision to include the start or not
475
478
                    # depends on the stop_rule if a stop is provided
476
 
                    # so pop this node back into the iterator
477
 
                    rev_iter = chain(iter([node]), rev_iter)
 
479
                    rev_iter = chain(
 
480
                        iter([(rev_id, depth, revno, end_of_merge)]),
 
481
                        rev_iter)
478
482
                    break
479
483
        if stop_revision_id is None:
480
 
            # Yield everything
481
 
            for node in rev_iter:
482
 
                rev_id = node.key[-1]
483
 
                yield (rev_id, node.merge_depth, node.revno,
484
 
                       node.end_of_merge)
 
484
            for rev_id, depth, revno, end_of_merge in rev_iter:
 
485
                yield rev_id, depth, revno, end_of_merge
485
486
        elif stop_rule == 'exclude':
486
 
            for node in rev_iter:
487
 
                rev_id = node.key[-1]
 
487
            for rev_id, depth, revno, end_of_merge in rev_iter:
488
488
                if rev_id == stop_revision_id:
489
489
                    return
490
 
                yield (rev_id, node.merge_depth, node.revno,
491
 
                       node.end_of_merge)
 
490
                yield rev_id, depth, revno, end_of_merge
492
491
        elif stop_rule == 'include':
493
 
            for node in rev_iter:
494
 
                rev_id = node.key[-1]
495
 
                yield (rev_id, node.merge_depth, node.revno,
496
 
                       node.end_of_merge)
 
492
            for rev_id, depth, revno, end_of_merge in rev_iter:
 
493
                yield rev_id, depth, revno, end_of_merge
497
494
                if rev_id == stop_revision_id:
498
495
                    return
499
496
        elif stop_rule == 'with-merges':
502
499
                left_parent = stop_rev.parent_ids[0]
503
500
            else:
504
501
                left_parent = _mod_revision.NULL_REVISION
505
 
            for node in rev_iter:
506
 
                rev_id = node.key[-1]
 
502
            for rev_id, depth, revno, end_of_merge in rev_iter:
507
503
                if rev_id == left_parent:
508
504
                    return
509
 
                yield (rev_id, node.merge_depth, node.revno,
510
 
                       node.end_of_merge)
 
505
                yield rev_id, depth, revno, end_of_merge
511
506
        else:
512
507
            raise ValueError('invalid stop_rule %r' % stop_rule)
513
508
 
1152
1147
        revision_id: if not None, the revision history in the new branch will
1153
1148
                     be truncated to end with revision_id.
1154
1149
        """
1155
 
        if (repository_policy is not None and
1156
 
            repository_policy.requires_stacking()):
1157
 
            to_bzrdir._format.require_stacking(_skip_repo=True)
1158
1150
        result = to_bzrdir.create_branch()
1159
1151
        result.lock_write()
1160
1152
        try:
2072
2064
BranchFormat.register_format(__format6)
2073
2065
BranchFormat.register_format(__format7)
2074
2066
BranchFormat.register_format(__format8)
2075
 
BranchFormat.set_default_format(__format7)
 
2067
BranchFormat.set_default_format(__format6)
2076
2068
_legacy_formats = [BzrBranchFormat4(),
2077
2069
    ]
2078
2070
network_format_registry.register(