##// END OF EJS Templates
scmutil: avoid quadratic membership testing (issue5969)...
scmutil: avoid quadratic membership testing (issue5969) tr.changes['revs'] is an xrange, which has an O(n) __contains__ implementation. The `rev not in newrevs` lookup a few lines below will therefore be O(n^2) if all incoming changesets are public. This issue isn't present on @ because 45e05d39d9ce introduced a custom type implementing an xrange primitive with O(1) contains and switched tr.changes['revs'] to be an instance of that type. We work around the problem on the stable branch by casting the xrange to a set. This is a bit hacky because it requires allocating memory to hold each integer in the range. But we are already holding the full set of pulled revision numbers in memory multiple times (such as in `tr.changes['phases']`). So this is a relatively minor problem. This issue has been present since the phases reporting code was introduced in the 4.7 cycle by eb9835014d20. This change should be reverted/ignored when stable is merged into default. On the mozilla-unified repository with 483492 changesets, `hg clone` time improves substantially: before: 1843.700s user; 29.810s sys after: 461.170s user; 29.360s sys

File last commit:

r25794:90214844 default
r39300:d750a6c9 stable
Show More
filerevision.tmpl
51 lines | 1.6 KiB | application/x-cheetah | CheetahLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 {header}
<title>{repo|escape}:{file|escape}</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}log/{symrev}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
<a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
<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} / {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%filerevparent}
{child%filerevchild}
<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>
Anton Shestakov
hgweb: clearly outline <tr> block in gitweb and spartan styles...
r24999 <td class="date age">{date|rfc822date}</td>
</tr>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <tr>
<td class="metatag">permissions:</td>
Anton Shestakov
hgweb: clearly outline <tr> block in gitweb and spartan styles...
r24999 <td>{permissions|permissions}</td>
</tr>
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 <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>
<pre>
{text%fileline}
</pre>
{footer}