~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/missing.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-09-01 08:02:42 UTC
  • mfrom: (5390.3.3 faster-revert-593560)
  • Revision ID: pqm@pqm.ubuntu.com-20100901080242-esg62ody4frwmy66
(spiv) Avoid repeatedly calling self.target.all_file_ids() in
 InterTree.iter_changes. (Andrew Bennetts)

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from bzrlib import (
20
20
    log,
21
 
    repository as _mod_repository,
22
 
    tsort,
23
21
    )
24
22
import bzrlib.revision as _mod_revision
25
23
 
138
136
    if not ancestry: #Empty ancestry, no need to do any work
139
137
        return []
140
138
 
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)
 
139
    merge_sorted_revisions = branch.iter_merge_sorted_revisions()
162
140
    # Now that we got the correct revnos, keep only the relevant
163
141
    # revisions.
164
142
    merge_sorted_revisions = [
165
 
        (s, revid, n, d, e) for s, revid, n, d, e in merge_sorted_revisions
 
143
        # log.reverse_by_depth expects seq_num to be present, but it is
 
144
        # stripped by iter_merge_sorted_revisions()
 
145
        (0, revid, n, d, e) for revid, n, d, e in merge_sorted_revisions
166
146
        if revid in ancestry]
167
147
    if not backward:
168
148
        merge_sorted_revisions = log.reverse_by_depth(merge_sorted_revisions)