mercurial/templates/spartan/changelogentry.tmpl
author Anton Shestakov <av6@dwimlabs.net>
Tue, 21 Nov 2017 17:03:41 +0800
changeset 35485 1721ce06100a
parent 35131 f38c91c74294
child 36322 f3fd4fe0506f
permissions -rw-r--r--
hgweb: display fate of obsolete changesets Operations that obsolete changesets store enough metadata to explain what happened after the fact. One way to get that metadata is showsuccsandmarkers function, which returns a list of successors of a particular changeset and appropriate obsolescence markers. Templates have a set of experimental functions that have names starting with obsfate. This patch uses some of these functions to interpret output of succsandmarkers() and produce human-friendly messages that describe what happened to an obsolete changeset, e.g. "pruned" or "rewritten as 6:3de5eca88c00". In commonentry(), succsandmarkers property is made callable so it's only executed on demand; this saves time when changeset is not obsolete, and also in e.g. /shortlog view, where there are a lot of changesets, but we don't need to show each and every one in detail. In spartan theme, succsandmarkers is used instead of the simple "obsolete: yes", in other themes a new line is added to /rev page.

<table class="logEntry parity{parity}">
 <tr>
  <th class="label"><span class="age">{date|rfc822date}</span>:</th>
  <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
 </tr>
 <tr>
  <th class="revision">changeset {rev}:</th>
  <td class="node"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
 </tr>
 {parent%changelogparent}
 {child%changelogchild}
 {changelogtag}
 <tr>
  <th class="author">author:</th>
  <td class="author">{author|obfuscate}</td>
 </tr>
 <tr>
  <th class="date">date:</th>
  <td class="date">{date|rfc822date}</td>
 </tr>
 {ifeq(phase, 'public', '', '<tr>
  <th class="phase">phase:</th>
  <td class="phase">{phase|escape}</td>
 </tr>')}
 {if(obsolete, '<tr>
  <th class="obsolete">obsolete:</th>
  <td class="obsolete">{succsandmarkers%obsfateentry}</td>
 </tr>')}
 {ifeq(count(instabilities), '0', '', '<tr>
  <th class="instabilities">instabilities:</th>
  <td class="instabilities">{instabilities%"{instability} "|escape}</td>
 </tr>')}
 <tr>
  <th class="files"><a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
  <td class="files">{files}</td>
 </tr>
</table>