## Changesets table !
%if not c.cs_ranges: ${_('No changesets')} %else: %if c.ancestor:
${_('Ancestor')}: ${h.link_to(h.short_id(c.ancestor),h.url('changeset_home',repo_name=c.repo_name,revision=c.ancestor))}
%endif
%for cnt, cs in enumerate(reversed(c.cs_ranges)): %endfor
%if cs.raw_id in c.statuses:
%endif %if c.cs_comments.get(cs.raw_id): %endif
${cs.date}
${h.gravatar(h.email_or_none(cs.author), size=14)}
${h.person(cs.author)}
${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.cs_repo.repo_name,revision=cs.raw_id))} %if cs.branch: ${h.link_to(cs.branch,h.url('changelog_home',repo_name=c.cs_repo.repo_name,branch=cs.branch))} %endif
${h.urlify_commit(cs.message, c.repo_name)}
%if c.as_form:
## links should perhaps use ('rev', c.a_rev) instead ... ${h.link_to(_('Show merge diff'), h.url('compare_url', repo_name=c.a_repo.repo_name, org_ref_type=c.a_ref_type, org_ref_name=c.a_ref_name, other_repo=c.cs_repo.repo_name, other_ref_type=c.cs_ref_type, other_ref_name=c.cs_ref_name, merge='1') )}
${_('Common ancestor')}: %if c.ancestor: ${h.link_to(h.short_id(c.ancestor),h.url('changeset_home',repo_name=c.repo_name,revision=c.ancestor))} %else: ${_('No common ancestor found - repositories are unrelated')} %endif
%endif %if c.cs_ranges_org is not None: ## TODO: list actual changesets?
${h.link_to_ref(c.cs_repo.repo_name, c.cs_ref_type, c.cs_ref_name, c.cs_rev)} ${_('is')} ${_('%s changesets') % (len(c.cs_ranges_org))} ${_('behind')} ${h.link_to_ref(c.a_repo.repo_name, c.a_ref_type, c.a_ref_name)}
%endif %endif
%if c.as_form: %else: %endif