~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/branch.py

  • Committer: Danny van Heumen
  • Date: 2010-03-09 21:42:11 UTC
  • mto: (4634.139.5 2.0)
  • mto: This revision was merged to the branch mainline in revision 5160.
  • Revision ID: danny@dannyvanheumen.nl-20100309214211-iqh42x6qcikgd9p3
Reverted now-useless TODO list.

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
 
            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
 
 
 
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)
458
454
        filtered = self._filter_merge_sorted_revisions(
459
455
            self._merge_sorted_revisions_cache, start_revision_id,
460
456
            stop_revision_id, stop_rule)
470
466
        """Iterate over an inclusive range of sorted revisions."""
471
467
        rev_iter = iter(merge_sorted_revisions)
472
468
        if start_revision_id is not None:
473
 
            for rev_id, depth, revno, end_of_merge in rev_iter:
 
469
            for node in rev_iter:
 
470
                rev_id = node.key[-1]
474
471
                if rev_id != start_revision_id:
475
472
                    continue
476
473
                else:
477
474
                    # The decision to include the start or not
478
475
                    # depends on the stop_rule if a stop is provided
479
 
                    rev_iter = chain(
480
 
                        iter([(rev_id, depth, revno, end_of_merge)]),
481
 
                        rev_iter)
 
476
                    # so pop this node back into the iterator
 
477
                    rev_iter = chain(iter([node]), rev_iter)
482
478
                    break
483
479
        if stop_revision_id is None:
484
 
            for rev_id, depth, revno, end_of_merge in rev_iter:
485
 
                yield rev_id, depth, revno, end_of_merge
 
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)
486
485
        elif stop_rule == 'exclude':
487
 
            for rev_id, depth, revno, end_of_merge in rev_iter:
 
486
            for node in rev_iter:
 
487
                rev_id = node.key[-1]
488
488
                if rev_id == stop_revision_id:
489
489
                    return
490
 
                yield rev_id, depth, revno, end_of_merge
 
490
                yield (rev_id, node.merge_depth, node.revno,
 
491
                       node.end_of_merge)
491
492
        elif stop_rule == 'include':
492
 
            for rev_id, depth, revno, end_of_merge in rev_iter:
493
 
                yield rev_id, depth, revno, end_of_merge
 
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)
494
497
                if rev_id == stop_revision_id:
495
498
                    return
496
499
        elif stop_rule == 'with-merges':
499
502
                left_parent = stop_rev.parent_ids[0]
500
503
            else:
501
504
                left_parent = _mod_revision.NULL_REVISION
502
 
            for rev_id, depth, revno, end_of_merge in rev_iter:
 
505
            for node in rev_iter:
 
506
                rev_id = node.key[-1]
503
507
                if rev_id == left_parent:
504
508
                    return
505
 
                yield rev_id, depth, revno, end_of_merge
 
509
                yield (rev_id, node.merge_depth, node.revno,
 
510
                       node.end_of_merge)
506
511
        else:
507
512
            raise ValueError('invalid stop_rule %r' % stop_rule)
508
513
 
1147
1152
        revision_id: if not None, the revision history in the new branch will
1148
1153
                     be truncated to end with revision_id.
1149
1154
        """
 
1155
        if (repository_policy is not None and
 
1156
            repository_policy.requires_stacking()):
 
1157
            to_bzrdir._format.require_stacking(_skip_repo=True)
1150
1158
        result = to_bzrdir.create_branch()
1151
1159
        result.lock_write()
1152
1160
        try:
1276
1284
        # clone call. Or something. 20090224 RBC/spiv.
1277
1285
        if revision_id is None:
1278
1286
            revision_id = self.last_revision()
1279
 
        try:
1280
 
            dir_to = self.bzrdir.clone_on_transport(to_transport,
1281
 
                revision_id=revision_id, stacked_on=stacked_on,
1282
 
                create_prefix=create_prefix, use_existing_dir=use_existing_dir)
1283
 
        except errors.FileExists:
1284
 
            if not use_existing_dir:
1285
 
                raise
1286
 
        except errors.NoSuchFile:
1287
 
            if not create_prefix:
1288
 
                raise
 
1287
        dir_to = self.bzrdir.clone_on_transport(to_transport,
 
1288
            revision_id=revision_id, stacked_on=stacked_on,
 
1289
            create_prefix=create_prefix, use_existing_dir=use_existing_dir)
1289
1290
        return dir_to.open_branch()
1290
1291
 
1291
1292
    def create_checkout(self, to_location, revision_id=None,
2064
2065
BranchFormat.register_format(__format6)
2065
2066
BranchFormat.register_format(__format7)
2066
2067
BranchFormat.register_format(__format8)
2067
 
BranchFormat.set_default_format(__format6)
 
2068
BranchFormat.set_default_format(__format7)
2068
2069
_legacy_formats = [BzrBranchFormat4(),
2069
2070
    ]
2070
2071
network_format_registry.register(