5033
5033
graph = branch.repository.get_graph()
5034
5034
rev1, rev2 = _get_revision_range(revision, branch, self.name())
5035
5035
revid1, revid2 = rev1.rev_id, rev2.rev_id
5036
5036
# only show revisions between revid1 and revid2 (inclusive)
5037
5037
tags = [(tag, revid) for tag, revid in tags if
5038
5038
graph.is_between(revid, revid1, revid2)]
5043
elif sort == 'time':
5045
for tag, revid in tags:
5047
revobj = branch.repository.get_revision(revid)
5048
except errors.NoSuchRevision:
5049
timestamp = sys.maxint # place them at the end
5051
timestamp = revobj.timestamp
5052
timestamps[revid] = timestamp
5053
tags.sort(key=lambda x: timestamps[x[1]])
5055
# [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
5056
for index, (tag, revid) in enumerate(tags):
5058
revno = branch.revision_id_to_dotted_revno(revid)
5059
if isinstance(revno, tuple):
5060
revno = '.'.join(map(str, revno))
5061
except errors.NoSuchRevision:
5062
# Bad tag data/merges can lead to tagged revisions
5063
# which are not in this branch. Fail gracefully ...
5065
tags[index] = (tag, revno)
5041
elif sort == 'time':
5043
for tag, revid in tags:
5045
revobj = branch.repository.get_revision(revid)
5046
except errors.NoSuchRevision:
5047
timestamp = sys.maxint # place them at the end
5049
timestamp = revobj.timestamp
5050
timestamps[revid] = timestamp
5051
tags.sort(key=lambda x: timestamps[x[1]])
5053
# [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
5054
for index, (tag, revid) in enumerate(tags):
5056
revno = branch.revision_id_to_dotted_revno(revid)
5057
if isinstance(revno, tuple):
5058
revno = '.'.join(map(str, revno))
5059
except errors.NoSuchRevision:
5060
# Bad tag data/merges can lead to tagged revisions
5061
# which are not in this branch. Fail gracefully ...
5063
tags[index] = (tag, revno)
5066
5066
for tag, revspec in tags:
5067
5067
self.outf.write('%-20s %s\n' % (tag, revspec))