##// END OF EJS Templates
changelog: optionally store added and removed files in changeset extras...
changelog: optionally store added and removed files in changeset extras As mentioned in an earlier patch, copies._chain() is used a lot in the changeset-centric version of pathcopies(). It is expensive because it needs to look at the manifest in order to filter out copies whose target file has since been removed. I want to store the sets of added and removed files in the changeset in order to speed that up. This patch does the writing part of that. It could easily be a separate config, but it's currently tied to experimental.copies.write-to since that's the only real use case (it will also make the {file_*} template keywords faster, but I doubt that anyone cares enough about those to write extra metadata for them). The new information is stored in the changeset extras. Since they're always subsets of the changeset's "files" list, they're stored as indexes into that list. I've stored the indexes as stringified ints separated by NUL bytes. The size of 00changelog.d for the hg repo increased in size by 0.28% percent (compared to the size with only copy information in the changesets, which in turn is 0.17% larger than without copy information). We could store only the delta between the indexes and we could store them in binary, but the chosen format is more readable. We could also have implemented this as a cache outside the changelog. One advantage of doing it that way is that we would get the speedups from the {file_*} template keywords also on old repos. Another advantage is that it we can rewrite the cache if we find a bug in how we calculate the set of files. A disadvantage is that it would be more complex. Another is that it would surely use more space. We already write the copy information to the changeset extras, so it seems like a small step to also write these file sets. Differential Revision: https://phab.mercurial-scm.org/D6416

File last commit:

r30708:011122b3 default
r42598:f385ba70 default
Show More
fileannotate.tmpl
51 lines | 1.7 KiB | application/x-cheetah | CheetahLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {header}
<title>{repo|escape}: {file|escape} annotate</title>
</head>
<body>
<div class="buttons">
av6
hgweb: don't dereference symbolic revision in spartan style...
r25603 <a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a>
<a href="{url|urlescape}shortlog/{symrev}{sessionvars%urlparameter}">shortlog</a>
av6
spartan: don't drop current revision in log/graph links...
r25794 <a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a>
<a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a>
av6
hgweb: don't dereference symbolic revision in spartan style...
r25603 <a href="{url|urlescape}rev/{symrev}{sessionvars%urlparameter}">changeset</a>
<a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}">files</a>
<a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}">file</a>
<a href="{url|urlescape}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
Gregory Szorc
hgweb: link to raw-file on annotation page (BC)...
r30708 <a href="{url|urlescape}raw-file/{symrev}/{file|urlescape}">raw</a>
Thomas Arendsen Hein
hgweb: urlescape all urls, HTML escape repo/tag/branch/... names...
r18526 <a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </div>
Angel Ezquerra <angel.ezquerra at gmail.com>
hgweb, spartan: add "URL breadcrumbs"...
r18259 <h2><a href="/">Mercurial</a> {pathdef%breadcrumb} / annotate {file|escape}</h2>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
<table>
<tr>
<td class="metatag">changeset {rev}:</td>
Anton Shestakov
hgweb: clearly outline <tr> block in gitweb and spartan styles...
r24999 <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
</tr>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {parent%fileannotateparent}
{child%fileannotatechild}
<tr>
<td class="metatag">author:</td>
Anton Shestakov
hgweb: clearly outline <tr> block in gitweb and spartan styles...
r24999 <td>{author|obfuscate}</td>
</tr>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <tr>
<td class="metatag">date:</td>
Brodie Rao
hgweb: fix dynamic date calculation not working under Safari...
r15375 <td class="date age">{date|rfc822date}</td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>
<tr>
<td class="metatag">permissions:</td>
<td>{permissions|permissions}</td>
</tr>
<tr>
<td class="metatag">description:</td>
Angel Ezquerra
hgweb: apply the websub filter to revision descriptions...
r18628 <td>{desc|strip|escape|websub|addbreaks|nonempty}</td>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 </tr>
</table>
<table cellspacing="0" cellpadding="0">
{annotate%annotateline}
</table>
{footer}