Mercurial > hg
view mercurial/templates/paper/map @ 34272:53fb09c73ba8
revset: remove "small" argument from "_optimize"
`_optimize` calculates weights of subtrees. "small" affects some weight
calculation (either 1 or 0.5). The weights are now only useful in `and`
optimization where we might swap two arguments and use `andsmally`.
In the real world, it seems unlikely that revsets with weight of 0.5 or 1
matters the `and` order optimization. I think the important thing is to get
weights of expensive revsets right (ex. `contains`).
This patch removes the `small` argument to simplify the interface.
As for choosing between 0.5 vs 1, things returning a single revision
(`ancestor`, `string`) has a weight of 0.5. Things returning multiple
revisions returns 1. This could be sometimes useful in the `andsmally`
optimization, ex.
(((:)-2) & expensive()) & ((1-2) & expensive())
^^^ ^
^^^^^^^ ^^^^^
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
weight=1 weight=0.5
would have an `andsmally` optimization so `1-2` gets executed first, which
seems to be desirable.
Differential Revision: https://phab.mercurial-scm.org/D656
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 01 Sep 2017 19:30:40 -0700 |
parents | 32331f54930c |
children | 6797f1fbc642 |
line wrap: on
line source
default = 'shortlog' mimetype = 'text/html; charset={encoding}' header = header.tmpl footer = footer.tmpl search = search.tmpl changelog = shortlog.tmpl shortlog = shortlog.tmpl shortlogentry = shortlogentry.tmpl graph = graph.tmpl help = help.tmpl helptopics = helptopics.tmpl helpentry = ' <tr><td> <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}"> {if(basename, '{basename|escape}', '{topic|escape}')} </a> </td><td> {summary|escape} </td></tr>' naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> ' navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> ' navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> ' filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> ' filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> ' filenodelink = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> ' filenolink = '{file|escape} ' fileellipses = '...' diffstatlink = diffstat.tmpl diffstatnolink = diffstat.tmpl changelogentry = shortlogentry.tmpl searchentry = shortlogentry.tmpl changeset = changeset.tmpl manifest = manifest.tmpl nav = '{before%naventry} {after%naventry}' navshort = '{before%navshortentry}{after%navshortentry}' navgraph = '{before%navgraphentry}{after%navgraphentry}' filenav = '{before%filenaventry}{after%filenaventry}' direntry = ' <tr class="fileline"> <td class="name"> <a href="{url|urlescape}file/{symrev}{path|urlescape}{sessionvars%urlparameter}"> <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/ </a> <a href="{url|urlescape}file/{symrev}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}"> {emptydirs|escape} </a> </td> <td class="size"></td> <td class="permissions">drwxr-xr-x</td> </tr>' fileentry = ' <tr class="fileline"> <td class="filename"> <a href="{url|urlescape}file/{symrev}/{file|urlescape}{sessionvars%urlparameter}"> <img src="{staticurl|urlescape}coal-file.png" alt="file"/> {basename|escape} </a> </td> <td class="size">{size}</td> <td class="permissions">{permissions|permissions}</td> </tr>' filerevision = filerevision.tmpl fileannotate = fileannotate.tmpl filediff = filediff.tmpl filecomparison = filecomparison.tmpl filelog = filelog.tmpl fileline = ' <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' filelogentry = filelogentry.tmpl annotateline = ' <tr id="{lineid}"{ifeq(node, originalnode, ' class="thisrev"')}> <td class="annotate parity{blockparity}"> {if(blockhead, '<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"> {rev} </a>')} <div class="annotate-info"> <div> <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"> {node|short}</a> {desc|escape|firstline} </div> <div><em>{author|obfuscate}</em></div> <div>parents: {parents%annotateparent}</div> <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> </div> </td> <td class="source followlines-btn-parent"><a href="#{lineid}">{linenumber}</a> {line|escape}</td> </tr>' annotateparent = ' <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rev}</a>' diffblock = '<div class="bottomline inc-lineno"><pre class="sourcelines wrap">{lines}</pre></div>' difflineplus = ' <span id="{lineid}" class="plusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' difflineminus = ' <span id="{lineid}" class="minusline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' difflineat = ' <span id="{lineid}" class="atline">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' diffline = ' <span id="{lineid}">{strip(line|escape, '\r\n')}</span><a href="#{lineid}"></a>' comparisonblock =' <tbody class="block"> {lines} </tbody>' comparisonline = ' <tr id="{lineid}"> <td class="source {type}"><a href="#{lineid}">{leftlinenumber}</a> {leftline|escape}</td> <td class="source {type}"><a href="#{lineid}">{rightlinenumber}</a> {rightline|escape}</td> </tr>' changesetparent = '<a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> ' changesetparentdiff = ' {changesetparent} {ifeq(node, basenode, '(current diff)', '({difffrom})')}' difffrom = '<a href="{url|urlescape}rev/{node|short}:{originalnode|short}{sessionvars%urlparameter}">diff</a>' filerevparent = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> ' filerevchild = '<a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> ' filerename = '{file|escape}@' filelogrename = ' <span class="base"> base <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}"> {file|escape}@{node|short} </a> </span>' fileannotateparent = ' <tr> <td class="metatag">parent:</td> <td> <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}"> {rename%filerename}{node|short} </a> </td> </tr>' changesetchild = ' <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>' fileannotatechild = ' <tr> <td class="metatag">child:</td> <td> <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}"> {node|short} </a> </td> </tr>' tags = tags.tmpl tagentry = ' <tr class="tagEntry"> <td> <a href="{url|urlescape}rev/{tag|revescape}{sessionvars%urlparameter}"> {tag|escape} </a> </td> <td class="node"> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"> {node|short} </a> </td> </tr>' bookmarks = bookmarks.tmpl bookmarkentry = ' <tr class="tagEntry"> <td> <a href="{url|urlescape}rev/{bookmark|revescape}{sessionvars%urlparameter}"> {bookmark|escape} </a> </td> <td class="node"> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"> {node|short} </a> </td> </tr>' branches = branches.tmpl branchentry = ' <tr class="tagEntry"> <td> <a href="{url|urlescape}shortlog/{branch|revescape}{sessionvars%urlparameter}" class="{status}"> {branch|escape} </a> </td> <td class="node"> <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}"> {node|short} </a> </td> </tr>' changelogtag = '<span class="tag">{name|escape}</span> ' changesettag = '<span class="tag">{tag|escape}</span> ' changesetbookmark = '<span class="tag">{bookmark|escape}</span> ' changelogbranchhead = '<span class="branchhead">{name|escape}</span> ' changelogbranchname = '<span class="branchname">{name|escape}</span> ' filediffparent = ' <tr> <th class="parent">parent {rev}:</th> <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td> </tr>' filediffchild = ' <tr> <th class="child">child {rev}:</th> <td class="child"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> </td> </tr>' indexentry = ' <tr> <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td> <td>{description}</td> <td>{contact|obfuscate}</td> <td class="age">{lastchange|rfc822date}</td> <td class="indexlinks">{archives%indexarchiveentry}</td> <td> {if(isdirectory, '', '<a href="{url|urlescape}atom-log" title="subscribe to repository atom feed"> <img class="atom-logo" src="{staticurl|urlescape}feed-icon-14x14.png" alt="subscribe to repository atom feed"> </a>' )} </td> </tr>\n' indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>' index = index.tmpl archiveentry = ' <li> <a href="{url|urlescape}archive/{symrev}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> </li>' notfound = notfound.tmpl error = error.tmpl urlparameter = '{separator}{name}={value|urlescape}' hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />' breadcrumb = '> <a href="{url|urlescape}">{name|escape}</a> ' searchform = ' <form class="search" action="{url|urlescape}log"> {sessionvars%hiddenformentry} <p><input name="rev" id="search1" type="text" size="30" value="{query|escape}" /></p> <div id="hint">{searchhint}</div> </form>' searchhint = 'Find changesets by keywords (author, files, the commit message), revision number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'