~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/log.py

Merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
    get_terminal_encoding,
73
73
    terminal_width,
74
74
    )
 
75
from bzrlib.repository import _strip_NULL_ghosts
75
76
from bzrlib.revision import (
76
77
    NULL_REVISION,
77
78
    )
459
460
    weave_modifed_revisions = set(file_weave.versions())
460
461
    # build the ancestry of each revision in the graph
461
462
    # - only listing the ancestors that change the specific file.
462
 
    rev_graph = branch.repository.get_revision_graph(mainline_revisions[-1])
463
 
    sorted_rev_list = topo_sort(rev_graph)
 
463
    graph = branch.repository.get_graph()
 
464
    # This asks for all mainline revisions, which means we only have to spider
 
465
    # sideways, rather than depth history. That said, its still size-of-history
 
466
    # and should be addressed.
 
467
    parent_map = dict(((key, value) for key, value in
 
468
        graph.iter_ancestry(mainline_revisions) if value is not None))
 
469
    sorted_rev_list = topo_sort(parent_map.items())
464
470
    ancestry = {}
465
471
    for rev in sorted_rev_list:
466
 
        parents = rev_graph[rev]
 
472
        parents = parent_map[rev]
467
473
        if rev not in weave_modifed_revisions and len(parents) == 1:
468
474
            # We will not be adding anything new, so just use a reference to
469
475
            # the parent ancestry.
477
483
        ancestry[rev] = rev_ancestry
478
484
 
479
485
    def is_merging_rev(r):
480
 
        parents = rev_graph[r]
 
486
        parents = parent_map[r]
481
487
        if len(parents) > 1:
482
488
            leftparent = parents[0]
483
489
            for rightparent in parents[1:]:
505
511
        for revision_id in revision_ids:
506
512
            yield revision_id, str(rev_nos[revision_id]), 0
507
513
        return
 
514
    graph = branch.repository.get_graph()
 
515
    # This asks for all mainline revisions, which means we only have to spider
 
516
    # sideways, rather than depth history. That said, its still size-of-history
 
517
    # and should be addressed.
 
518
    parent_map = dict(((key, value) for key, value in
 
519
        graph.iter_ancestry(mainline_revs) if value is not None))
 
520
    # filter out ghosts; merge_sort errors on ghosts.
 
521
    rev_graph = _strip_NULL_ghosts(parent_map)
508
522
    merge_sorted_revisions = merge_sort(
509
 
        branch.repository.get_revision_graph(mainline_revs[-1]),
 
523
        rev_graph,
510
524
        mainline_revs[-1],
511
525
        mainline_revs,
512
526
        generate_revno=True)