${h.urlify_commit(c.changeset.message, c.repo_name)}
% if len(c.changeset.affected_files) <= c.affected_files_cut_off:
${len(c.changeset.removed)}
${len(c.changeset.changed)}
${len(c.changeset.added)}
% else:
!
!
!
% endif
%if c.changeset.parents:
%for p_cs in reversed(c.changeset.parents):
${_('Parent')}
${p_cs.revision}:${h.link_to(h.short_id(p_cs.raw_id),
h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)}
%endfor
%else:
${_('No parents')}
%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
${_('%s files affected with %s insertions and %s deletions:') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)}
%for change,filenode,diff,cs1,cs2,stat in c.changes:
%if change != 'removed':
${h.link_to(h.safe_unicode(filenode.path),c.anchor_url(filenode.changeset.raw_id,filenode.path,request.GET)+"_target")}
%else:
${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=h.FID('',filenode.path)))}
%endif
${h.fancy_file_stats(stat)}
%endfor
% if c.cut_off:
${_('Changeset was too big and was cut off...')}
% endif