Mercurial > hg
view mercurial/templates/paper/filediff.tmpl @ 32197:7bcc9a5ab96e
strip: make tree stripping O(changes) instead of O(repo)
The old tree stripping logic iterated over every tree revlog in the repo looking
for commits that had revs to be stripped. That's very inefficient in large
repos. Instead, let's look at what files are touched by the strip and only
inspect those revlogs.
I don't have actual perf numbers, since internally we don't use a true
treemanifest, but simply iterating over hundreds of thousands of revlogs takes
many, many seconds, so this should help tremendously when stripping only a few
commits.
author | Durham Goode <durham@fb.com> |
---|---|
date | Mon, 08 May 2017 11:35:23 -0700 |
parents | 63be46407a50 |
children | cba4461aa0a0 |
line wrap: on
line source
{header} <title>{repo|escape}: {file|escape} diff</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 class="active">diff</li> <li><a href="{url|urlescape}comparison/{symrev}/{file|urlescape}{sessionvars%urlparameter}">comparison</a></li> <li><a href="{url|urlescape}annotate/{symrev}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></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> diff {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"> <p>{sessionvars%hiddenformentry}</p> <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>author</th> <td>{author|obfuscate}</td> </tr> <tr> <th>date</th> <td class="date age">{date|rfc822date}</td> </tr> <tr> <th>parents</th> <td>{parent%filerevparent}</td> </tr> <tr> <th>children</th> <td>{child%filerevchild}</td> </tr> </table> <div class="overflow"> <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="javascript:toggleLinewrap()">on</a></div> <div class="sourcefirst"> line diff</div> <div class="stripes2 diffblocks"> {diff} </div> </div> </div> </div> {footer}