410
410
# Find and print the interesting revisions
411
411
generator = self._generator_factory(self.branch, rqst)
412
for lr in generator.iter_log_revisions():
413
for lr in generator.iter_log_revisions():
415
except errors.GhostRevisionUnusableHere:
416
raise errors.BzrCommandError(
417
gettext('Further revision history missing.'))
416
420
def _generator_factory(self, branch, rqst):
723
729
:param exclude_common_ancestry: Whether the start_rev_id should be part of
724
730
the iterated revisions.
725
731
:return: An iterator of (revision_id, dotted_revno, merge_depth) tuples.
732
dotted_revno will be None for ghosts
726
733
:raises _StartNotLinearAncestor: if a start_rev_id is specified but
727
734
is not found walking the left-hand history
731
738
graph = repo.get_graph()
732
739
if start_rev_id is None and end_rev_id is None:
733
740
cur_revno = br_revno
734
for revision_id in graph.iter_lefthand_ancestry(br_rev_id,
735
(_mod_revision.NULL_REVISION,)):
736
yield revision_id, str(cur_revno), 0
741
graph_iter = graph.iter_lefthand_ancestry(br_rev_id,
742
(_mod_revision.NULL_REVISION,))
745
revision_id = next(graph_iter)
746
except errors.RevisionNotPresent as e:
748
yield e.revision_id, None, None
751
yield revision_id, str(cur_revno), 0
739
754
if end_rev_id is None:
740
755
end_rev_id = br_rev_id
741
756
found_start = start_rev_id is None
742
for revision_id in graph.iter_lefthand_ancestry(end_rev_id,
743
(_mod_revision.NULL_REVISION,)):
744
revno_str = _compute_revno_str(branch, revision_id)
745
if not found_start and revision_id == start_rev_id:
746
if not exclude_common_ancestry:
757
graph_iter = graph.iter_lefthand_ancestry(end_rev_id,
758
(_mod_revision.NULL_REVISION,))
761
revision_id = next(graph_iter)
762
except StopIteration:
764
except errors.RevisionNotPresent as e:
766
yield e.revision_id, None, None
769
revno_str = _compute_revno_str(branch, revision_id)
770
if not found_start and revision_id == start_rev_id:
771
if not exclude_common_ancestry:
772
yield revision_id, revno_str, 0
747
776
yield revision_id, revno_str, 0
751
yield revision_id, revno_str, 0
754
raise _StartNotLinearAncestor()
778
raise _StartNotLinearAncestor()
757
781
def _graph_view_revisions(branch, start_rev_id, end_rev_id,
861
885
:return: An iterator over lists of ((rev_id, revno, merge_depth), rev,
865
889
return log_rev_iterator
866
890
searchRE = [(k, [re.compile(x, re.IGNORECASE) for x in v])
867
891
for k, v in match.items()]
998
1022
for revs in log_rev_iterator:
999
1023
# r = revision_id, n = revno, d = merge depth
1000
1024
revision_ids = [view[0] for view, _, _ in revs]
1001
revisions = repository.get_revisions(revision_ids)
1002
revs = [(rev[0], revision, rev[2]) for rev, revision in
1003
zip(revs, revisions)]
1025
revisions = dict(repository.iter_revisions(revision_ids))
1026
yield [(rev[0], revisions[rev[0][0]], rev[2]) for rev in revs]
1007
1029
def _make_batch_filter(branch, generate_delta, search, log_rev_iterator):