mercurial/templates/paper/fileannotate.tmpl
author Pierre-Yves David <pierre-yves.david@fb.com>
Tue, 16 Jun 2015 19:47:46 -0700
changeset 25620 5f87f2305ad0
parent 25617 63be46407a50
child 30708 011122b3b1c4
permissions -rw-r--r--
revset: translate node directly with changelog in 'head' Using 'repo[X]' is much slower because it creates a 'changectx' object and goes though multiple layers of code to do so. It is also error prone if there is tags, bookmarks, branch or other names that could map to a node hash and take precedence (user are wicked). This provides a significant performance boost on repository with a lot of heads. Benchmark result for a repo with 1181 heads. revset: head() plain min last reverse 0) 0.014853 0.014371 0.014350 0.015161 1) 0.001402 9% 0.000975 6% 0.000874 6% 0.001415 9% revset: head() - public() plain min last reverse 0) 0.015121 0.014420 0.014560 0.015028 1) 0.001674 11% 0.001109 7% 0.000980 6% 0.001693 11% revset: draft() and head() plain min last reverse 0) 0.015976 0.014490 0.014214 0.015892 1) 0.002335 14% 0.001018 7% 0.000887 6% 0.002340 14% The speed up is visible even when other more costly revset are in use revset: head() and author("mpm") plain min last reverse 0) 0.105419 0.090046 0.017169 0.108180 1) 0.090721 86% 0.077602 86% 0.003556 20% 0.093324 86%

{header}
<title>{repo|escape}: {file|escape} annotate</title>
</head>
<body>

<div class="container">
<div class="menu">
<div class="logo">
<a href="{logourl}">
<img src="{staticurl|urlescape}{logoimg}" alt="mercurial" /></a>
</div>
<ul>
<li><a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">log</a></li>
<li><a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a></li>
<li><a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a></li>
<li><a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
<li><a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a></li>
</ul>

<ul>
<li><a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a></li>
<li><a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
</ul>
<ul>
<li><a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
<li><a href="{url|urlescape}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
<li><a href="{url|urlescape}diff/{symrev}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
<li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li>
<li class="active">annotate</li>
<li><a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
<li><a href="{url|urlescape}raw-annotate/{symrev}/{file|urlescape}">raw</a></li>
</ul>
<ul>
<li><a href="{url|urlescape}help{sessionvars%urlparameter}">help</a></li>
</ul>
</div>

<div class="main">
<h2 class="breadcrumb"><a href="/">Mercurial</a> {pathdef%breadcrumb}</h2>
<h3>
 annotate {file|escape} @ {rev}:<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
 {branch%changelogbranchname}{tags%changelogtag}{bookmarks%changelogtag}
</h3>

<form class="search" action="{url|urlescape}log">
{sessionvars%hiddenformentry}
<p><input name="rev" id="search1" type="text" size="30" /></p>
<div id="hint">{searchhint}</div>
</form>

<div class="description">{desc|strip|escape|websub|nonempty}</div>

<table id="changesetEntry">
<tr>
 <th class="author">author</th>
 <td class="author">{author|obfuscate}</td>
</tr>
<tr>
 <th class="date">date</th>
 <td class="date age">{date|rfc822date}</td>
</tr>
<tr>
 <th class="author">parents</th>
 <td class="author">{parent%filerevparent}</td>
</tr>
<tr>
 <th class="author">children</th>
 <td class="author">{child%filerevchild}</td>
</tr>
</table>

<div class="overflow">
<table class="bigtable">
<thead>
<tr>
 <th class="annotate">rev</th>
 <th class="line">&nbsp;&nbsp;line source</th>
</tr>
</thead>
<tbody class="stripes2">
  {annotate%annotateline}
</tbody>
</table>
</div>
</div>
</div>

{footer}