%if c.changeset.parents:
%for n, p_cs in enumerate(reversed(c.changeset.parents)):
« ${h.link_to('%s:%s' % (p_cs.revision,p_cs.raw_id[:6]),h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
%endfor
%else:
${_('No parents')}
%endif
%if c.changeset.children:
%for n, p_cs in enumerate(reversed(c.changeset.children)):
${h.link_to('%s:%s' % (p_cs.revision,p_cs.raw_id[:6]),h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)} »
%endfor
%else:
${_('No children')}
%endif
${h.urlify_commit(c.changeset.message, c.repo_name)}
% if (len(c.changeset.affected_files) <= c.affected_files_cut_off) or c.fulldiff:
${len(c.changeset.removed)}
${len(c.changeset.changed)}
${len(c.changeset.added)}
% else:
!
!
!
% endif
%if len(c.changeset.parents)>1:
${_('merge')}
%endif
%if c.changeset.branch:
${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
%endif
%for tag in c.changeset.tags:
${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}
%endfor
% if c.limited_diff:
${ungettext('%s file changed','%s files changed',len(c.changeset.affected_files)) % (len(c.changeset.affected_files))}:
% else:
${ungettext('%s file changed with %s insertions and %s deletions','%s files changed with %s insertions and %s deletions', len(c.changeset.affected_files)) % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}:
%endif
%for FID, (cs1, cs2, change, path, diff, stats) in c.changes[c.changeset.raw_id].iteritems():
${h.fancy_file_stats(stats)}
%endfor
% if c.limited_diff:
${_('Changeset was too big and was cut off...')} ${_('Show full diff')}
% endif