4164
4164
short_name='d',
4167
RegistryOption.from_kwargs('sort',
4168
'Sort tags by different criteria.', title='Sorting',
4169
alpha='Sort tags lexicographically (default).',
4170
time='Sort tags chronologically.',
4170
4175
@display_command
4173
4179
show_ids=False,
4175
4181
branch, relpath = Branch.open_containing(directory)
4176
revno_map = branch.get_revision_id_to_revno_map()
4178
for tag_name, revid in branch.tags.get_tag_dict().items():
4179
revno = revno_map.get(revid, ('?',))
4180
tags.append(((revno, revid), tag_name))
4181
for (revno, revid), tag_name in sorted(tags):
4185
revspec = '.'.join(str(x) for x in revno)
4186
self.outf.write('%-20s %s\n' % (tag_name, revspec))
4182
tags = branch.tags.get_tag_dict().items()
4185
elif sort == 'time':
4187
for tag, revid in tags:
4189
revobj = branch.repository.get_revision(revid)
4190
except errors.NoSuchRevision:
4191
timestamp = sys.maxint # place them at the end
4193
timestamp = revobj.timestamp
4194
timestamps[revid] = timestamp
4195
tags.sort(key=lambda x: timestamps[x[1]])
4197
# [ (tag, revid), ... ] -> [ (tag, dotted_revno), ... ]
4198
revno_map = branch.get_revision_id_to_revno_map()
4199
tags = [ (tag, '.'.join(map(str, revno_map.get(revid, ('?',)))))
4200
for tag, revid in tags ]
4201
for tag, revspec in tags:
4202
self.outf.write('%-20s %s\n' % (tag, revspec))
4189
4205
class cmd_reconfigure(Command):