~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/missing.py

  • Committer: John Arbash Meinel
  • Date: 2009-08-17 18:52:01 UTC
  • mto: This revision was merged to the branch mainline in revision 4629.
  • Revision ID: john@arbash-meinel.com-20090817185201-5xmgwhtn9nv2p4h8
Fix bzrlib.missing to not directly load the graph, etc.

Look at bzrlib.annotate, but it needs to inject a node into the graph, which
isn't supported yet.

Show diffs side-by-side

added added

removed removed

Lines of Context:
138
138
    if not ancestry: #Empty ancestry, no need to do any work
139
139
        return []
140
140
 
141
 
    mainline_revs, rev_nos, start_rev_id, end_rev_id = log._get_mainline_revs(
142
 
        branch, None, tip_revno)
143
 
    if not mainline_revs:
144
 
        return []
145
 
 
146
 
    # This asks for all mainline revisions, which is size-of-history and
147
 
    # should be addressed (but currently the only way to get correct
148
 
    # revnos).
149
 
 
150
 
    # mainline_revisions always includes an extra revision at the
151
 
    # beginning, so don't request it.
152
 
    parent_map = dict(((key, value) for key, value
153
 
                       in graph.iter_ancestry(mainline_revs[1:])
154
 
                       if value is not None))
155
 
    # filter out ghosts; merge_sort errors on ghosts.
156
 
    # XXX: is this needed here ? -- vila080910
157
 
    rev_graph = _mod_repository._strip_NULL_ghosts(parent_map)
158
 
    # XXX: what if rev_graph is empty now ? -- vila080910
159
 
    merge_sorted_revisions = tsort.merge_sort(rev_graph, tip,
160
 
                                              mainline_revs,
161
 
                                              generate_revno=True)
 
141
    merge_sorted_revisions = branch.iter_merge_sorted_revisions()
162
142
    # Now that we got the correct revnos, keep only the relevant
163
143
    # revisions.
164
144
    merge_sorted_revisions = [
165
 
        (s, revid, n, d, e) for s, revid, n, d, e in merge_sorted_revisions
 
145
        # log.reverse_by_depth expects seq_num to be present, but it is
 
146
        # stripped by iter_merge_sorted_revisions()
 
147
        (0, revid, n, d, e) for revid, n, d, e in merge_sorted_revisions
166
148
        if revid in ancestry]
167
149
    if not backward:
168
150
        merge_sorted_revisions = log.reverse_by_depth(merge_sorted_revisions)