201
if isinstance(start_revision, int):
203
start_revision = revisionspec.RevisionInfo(branch, start_revision)
204
except errors.NoSuchRevision:
205
raise errors.InvalidRevisionNumber(start_revision)
207
if isinstance(end_revision, int):
209
end_revision = revisionspec.RevisionInfo(branch, end_revision)
210
except errors.NoSuchRevision:
211
raise errors.InvalidRevisionNumber(end_revision)
213
if end_revision is not None and end_revision.revno == 0:
214
raise errors.InvalidRevisionNumber(end_revision.revno)
201
216
# Build the request and execute it
202
217
rqst = make_log_request_dict(direction=direction, specific_fileids=file_ids,
203
218
start_revision=start_revision, end_revision=end_revision,
565
580
'--exclude-common-ancestry requires two different revisions'))
566
581
if direction not in ('reverse', 'forward'):
567
582
raise ValueError(gettext('invalid direction %r') % direction)
568
br_revno, br_rev_id = branch.last_revision_info()
583
br_rev_id = branch.last_revision()
584
if br_rev_id == _mod_revision.NULL_REVISION:
572
587
if (end_rev_id and start_rev_id == end_rev_id
574
589
or not _has_merges(branch, end_rev_id))):
575
590
# If a single revision is requested, check we can handle it
576
591
return _generate_one_revision(branch, end_rev_id, br_rev_id,
578
593
if not generate_merge_revisions:
580
595
# If we only want to see linear revisions, we can iterate ...
728
743
:raises _StartNotLinearAncestor: if a start_rev_id is specified but
729
744
is not found walking the left-hand history
731
br_revno, br_rev_id = branch.last_revision_info()
732
746
repo = branch.repository
733
747
graph = repo.get_graph()
734
748
if start_rev_id is None and end_rev_id is None:
750
br_revno, br_rev_id = branch.last_revision_info()
751
except errors.GhostRevisionsHaveNoRevno:
752
br_rev_id = branch.last_revision()
736
756
graph_iter = graph.iter_lefthand_ancestry(br_rev_id,
737
757
(_mod_revision.NULL_REVISION,))
743
763
yield e.revision_id, None, None
746
yield revision_id, str(cur_revno), 0
766
yield revision_id, str(cur_revno) if cur_revno is not None else None, 0
767
if cur_revno is not None:
770
br_rev_id = branch.last_revision()
749
771
if end_rev_id is None:
750
772
end_rev_id = br_rev_id
751
773
found_start = start_rev_id is None
1049
1071
:param branch: The branch containing the revisions.
1051
1073
:param start_revision: The first revision to be logged.
1052
For backwards compatibility this may be a mainline integer revno,
1053
1074
but for merge revision support a RevisionInfo is expected.
1055
1076
:param end_revision: The last revision to be logged.
1059
1080
:return: (start_rev_id, end_rev_id) tuple.
1061
branch_revno, branch_rev_id = branch.last_revision_info()
1062
1082
start_rev_id = None
1063
if start_revision is None:
1084
if start_revision is not None:
1085
if not isinstance(start_revision, revisionspec.RevisionInfo):
1086
raise TypeError(start_revision)
1087
start_rev_id = start_revision.rev_id
1088
start_revno = start_revision.revno
1089
if start_revno is None:
1064
1090
start_revno = 1
1066
if isinstance(start_revision, revisionspec.RevisionInfo):
1067
start_rev_id = start_revision.rev_id
1068
start_revno = start_revision.revno or 1
1070
branch.check_real_revno(start_revision)
1071
start_revno = start_revision
1072
start_rev_id = branch.get_rev_id(start_revno)
1074
1092
end_rev_id = None
1075
if end_revision is None:
1076
end_revno = branch_revno
1078
if isinstance(end_revision, revisionspec.RevisionInfo):
1079
end_rev_id = end_revision.rev_id
1080
end_revno = end_revision.revno or branch_revno
1082
branch.check_real_revno(end_revision)
1083
end_revno = end_revision
1084
end_rev_id = branch.get_rev_id(end_revno)
1094
if end_revision is not None:
1095
if not isinstance(end_revision, revisionspec.RevisionInfo):
1096
raise TypeError(start_revision)
1097
end_rev_id = end_revision.rev_id
1098
end_revno = end_revision.revno
1099
if end_revno is None:
1101
end_revno = branch.revno()
1102
except errors.GhostRevisionsHaveNoRevno:
1086
if branch_revno != 0:
1105
if branch.last_revision() != _mod_revision.NULL_REVISION:
1087
1106
if (start_rev_id == _mod_revision.NULL_REVISION
1088
1107
or end_rev_id == _mod_revision.NULL_REVISION):
1089
1108
raise errors.BzrCommandError(gettext('Logging revision 0 is invalid.'))
1090
if start_revno > end_revno:
1109
if end_revno is not None and start_revno > end_revno:
1091
1110
raise errors.BzrCommandError(gettext("Start revision must be "
1092
1111
"older than the end revision."))
1093
1112
return (start_rev_id, end_rev_id)
1996
2015
output.write('Added Revisions:\n')
1997
2016
start_revno = new_revno - len(new_history) + 1
1998
2017
show_log(branch, lf, None, verbose=False, direction='forward',
1999
start_revision=start_revno,)
2018
start_revision=start_revno)
2002
2021
def show_flat_log(repository, history, last_revno, lf):