Mercurial > hg-stable
view mercurial/templates/coal/map @ 23848:c5456b64eb07
discovery: run discovery on filtered repository
We have been running discovery on unfiltered repository for quite some time.
This was aimed at two things:
- save some bandwith by prevent the repushing of common but hidden changesets
- allow phases changes on secret/hidden changeset on bare push.
The cost of this unfiltered discovery combined with evolution is actually really
high. Evolution likely create thousand of hidden heads, and the discovery is
going to try to discovery if each of them are common or not. For example,
pushing from my development mercurial repository implies 17 discovery
round-trip.
The benefit are rare corner cases while the drawback are massive. So we run the
discovery on a filtered repository again.
We add some hack to detect remote heads that are known locally and adds them to
the common set anyway, so the good behavior of most of the corner case should
remains. But this will not work in all cases.
This bring my discovery phase back from 17 round-trips to 1 or 2.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Wed, 07 Jan 2015 00:07:29 -0800 |
parents | ee1bf2b5a780 |
children | 3bb6f5f478a7 |
line wrap: on
line source
default = 'shortlog' mimetype = 'text/html; charset={encoding}' header = header.tmpl footer = ../paper/footer.tmpl search = ../paper/search.tmpl changelog = ../paper/shortlog.tmpl shortlog = ../paper/shortlog.tmpl shortlogentry = ../paper/shortlogentry.tmpl graph = ../paper/graph.tmpl help = ../paper/help.tmpl helptopics = ../paper/helptopics.tmpl helpentry = ' <tr><td> <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}"> {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 = ../paper/diffstat.tmpl diffstatnolink = ../paper/diffstat.tmpl changelogentry = ../paper/shortlogentry.tmpl searchentry = ../paper/shortlogentry.tmpl changeset = ../paper/changeset.tmpl manifest = ../paper/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 parity{parity}"> <td class="name"> <a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}"> <img src="{staticurl|urlescape}coal-folder.png" alt="dir."/> {basename|escape}/ </a> <a href="{url|urlescape}file/{node|short}{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 parity{parity}"> <td class="filename"> <a href="{url|urlescape}file/{node|short}/{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 = ../paper/filerevision.tmpl fileannotate = ../paper/fileannotate.tmpl filediff = ../paper/filediff.tmpl filecomparison = ../paper/filecomparison.tmpl filelog = ../paper/filelog.tmpl fileline = ' <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>' filelogentry = ../paper/filelogentry.tmpl annotateline = ' <tr class="parity{parity}"> <td class="annotate"> <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}" title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a> </td> <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td> </tr>' diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>' difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>' difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>' difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>' diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}' comparisonblock =' <tbody class="block"> {lines} </tbody>' comparisonline = ' <tr> <td class="source {type}"><a href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td> <td class="source {type}"><a href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td> </tr>' changelogparent = ' <tr> <th class="parent">parent {rev}:</th> <td class="parent"><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></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>' changelogchild = ' <tr> <th class="child">child</th> <td class="child"> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"> {node|short} </a> </td> </tr>' 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 = ../paper/tags.tmpl tagentry = ' <tr class="tagEntry parity{parity}"> <td> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"> {tag|escape} </a> </td> <td class="node"> {node|short} </td> </tr>' bookmarks = ../paper/bookmarks.tmpl bookmarkentry = ' <tr class="tagEntry parity{parity}"> <td> <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}"> {bookmark|escape} </a> </td> <td class="node"> {node|short} </td> </tr>' branches = ../paper/branches.tmpl branchentry = ' <tr class="tagEntry parity{parity}"> <td> <a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}"> {branch|escape} </a> </td> <td class="node"> {node|short} </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>' filelogparent = ' <tr> <th>parent {rev}:</th> <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{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>' filelogchild = ' <tr> <th>child {rev}:</th> <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td> </tr>' indexentry = ' <tr class="parity{parity}"> <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> </tr>\n' indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>' index = ../paper/index.tmpl archiveentry = ' <li> <a href="{url|urlescape}archive/{node|short}{extension|urlescape}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a> </li>' notfound = ../paper/notfound.tmpl error = ../paper/error.tmpl urlparameter = '{separator}{name}={value|urlescape}' hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />' breadcrumb = '> <a href="{url|urlescape}">{name|escape}</a> ' searchhint = 'Find changesets by keywords (author, files, the commit message), revision number or hash, or <a href="{url|urlescape}help/revsets">revset expression</a>.'