view mercurial/templates/paper/fileannotate.tmpl @ 52167:7346f93be7a4

revlog: add the glue to use the Rust `InnerRevlog` from Python The performance of this has been looked at for quite some time, and some workflows are actually quite a bit faster than with the Python + C code. However, we are still (up to 20%) slower in some crucial places like cloning certain repos, log, cat, which makes this an incomplete rewrite. This is mostly due to the high amount of overhead in Python <-> Rust FFI, especially around the VFS code. A future patch series will rewrite the VFS code in pure Rust, which should hopefully get us up to par with current perfomance, if not better in all important cases. This is a "save state" of sorts, as this is a ton of code, and I don't want to pile up even more things in a single review. Continuing to try to match the current performance will take an extremely long time, if it's not impossible, without the aforementioned VFS work.
author Raphaël Gomès <rgomes@octobus.net>
date Wed, 19 Jun 2024 19:10:49 +0200
parents 9acc0360ff67
children
line wrap: on
line source

{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-file/{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>
 {alltags}
</h3>

{searchform}

<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>

{diffoptsform}

<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
    renderDiffOptsForm();
</script>

<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 sourcelines"
       data-logurl="{url|urlescape}log/{symrev}/{file|urlescape}"
       data-selectabletag="TR"
       data-ishead="{ishead}">
  {annotate%annotateline}
</tbody>
</table>
</div>
</div>
</div>

<script type="text/javascript" src="{staticurl|urlescape}followlines.js"></script>

{footer}