sapling/mercurial
Pierre-Yves David 01b68ae973 branchmap: allow to use cache of subset
Filtered repository are *subset* of unfiltered repository. This means that a
filtered branchmap could be use to compute the unfiltered version.

And filtered version happen to be subset of each other:
- "all() - unserved()" is a subset of "all() - hidden()"
- "all() - hidden()" is a subset of "all()"

This means that branchmap with "unfiltered" filter can be used as a base for
"hidden" branchmap that itself could be used as a base for unfiltered
branchmap.

   unserved < hidden < None

This changeset implements this mechanism. If the on disk branchcache is not valid
we use the branchcache of the nearest subset as base instead of computing it from
scratch. Such fallback can be cascaded multiple time is necessary.

Note that both "hidden" and "unserved" set are a bit volatile. We will add more
stable filtering in next changesets.

This changeset enables collaboration between no filtering and "unserved"
filtering. Fixing performance regression introduced by 7bff5f37cb97
2013-01-07 17:23:25 +01:00
..
help webcommands: allow hgweb's archive to recurse into subrepos 2012-10-29 10:53:46 -04:00
hgweb merge with stable 2013-01-02 00:24:28 -06:00
httpclient httpclient: apply change df9aea1def3e: remove use of two-argument raise 2013-01-01 13:25:07 -06:00
pure declare local constants instead of using magic values and comments 2012-08-27 23:16:22 +02:00
templates merge with stable 2013-01-02 00:24:28 -06:00
__init__.py
ancestor.py ancestor: add lazy membership testing to lazyancestors 2012-12-18 12:47:20 -08:00
archival.py archival: add "extended-timestamp" extra block for zip archives (issue3600) 2012-09-18 19:46:15 +09:00
base85.c base85: cast Py_ssize_t values to int (issue3481) 2012-06-04 16:59:34 +02:00
bdiff.c bdiff: check and cast first parameter value on putbe32() calls 2012-05-15 22:36:47 +02:00
bookmarks.py bookmarks: spelling correction in docstring 2012-12-07 11:30:38 -06:00
branchmap.py branchmap: allow to use cache of subset 2013-01-07 17:23:25 +01:00
bundlerepo.py bundlerepo: drop use of _cacheabletip 2012-12-28 02:34:32 +01:00
byterange.py spelling: primarily 2012-08-17 13:58:18 -07:00
changegroup.py changegroup: decompress GZ algorithm in larger chunks for better performance 2012-04-29 20:58:50 +02:00
changelog.py clfilter: use empty frozenset intead of empty tuple 2013-01-02 01:40:06 +01:00
cmdutil.py amend: prevent loss of bookmark on failed amend 2012-12-30 03:49:15 +01:00
commands.py phases: prepare phase command for filtering 2012-12-24 11:58:40 +01:00
commandserver.py commandserver: clean up use of two-argument raise 2013-01-01 12:50:04 -06:00
config.py grammar: it-handles 2012-08-17 13:58:19 -07:00
context.py clfilter: fallback to unfiltered version when linkrev point to filtered history 2012-12-29 00:40:18 +01:00
copies.py copies: do not track backward copies, only renames (issue3739) 2012-12-26 15:04:07 -08:00
dagparser.py en-us: labeled 2012-08-17 13:58:18 -07:00
dagutil.py cleanup: "raise SomeException()" -> "raise SomeException" 2012-05-12 16:00:58 +02:00
demandimport.py demandimport: determine at load time if __import__ has level argument 2011-08-22 22:50:52 +02:00
diffhelpers.c diffhelpers: use Py_ssize_t in testhunk() 2012-05-12 14:00:51 +02:00
dirstate.py merge with crew-stable 2012-12-16 23:02:54 -06:00
discovery.py branchmap: make update a method 2012-12-22 17:08:15 +01:00
dispatch.py dispatch: show empty filename in OSError aborts 2013-01-07 02:00:29 +01:00
encoding.py spelling: successfully 2012-08-17 13:58:19 -07:00
error.py wireproto: add out-of-band error class to allow remote repo to report errors 2011-08-02 15:21:10 -04:00
exewrapper.c exewrapper: adapt for legacy HackableMercurial 2012-08-07 11:04:41 +02:00
extensions.py hooks: print out more information when loading a python hook fails 2012-07-06 18:41:25 +02:00
fancyopts.py fancyopts: don't show a traceback on invalid integer values 2012-10-08 15:35:16 +02:00
filelog.py filelog: add file function to open other filelogs 2011-05-10 17:38:58 +02:00
filemerge.py filemerge: use util.shellquote when calling merge (issue3581) 2012-10-26 12:02:58 -07:00
fileset.py fileset: fix generator vs list bug in fast path 2012-08-15 22:50:23 +02:00
formatter.py formatter: add condwrite method 2012-11-03 14:37:50 -05:00
graphmod.py graphlog: extract ascii drawing code into graphmod 2012-07-11 17:13:39 +02:00
hbisect.py spelling: recursion 2012-08-17 13:58:18 -07:00
help.py help: indicate help omitting if help document is not fully displayed 2012-10-18 10:31:15 +09:00
hg.py openpath: specify binary mode and use util.posixfile 2012-11-01 13:46:03 +01:00
hook.py hook: disable demandimport before importing hooks 2012-12-20 21:26:30 +01:00
httpconnection.py httpclient: fix calling convention violation 2012-10-18 23:55:15 -05:00
httppeer.py httprepo: ensure Content-Type header exists when pushing data 2012-07-13 13:21:20 +02:00
i18n.py i18n: use getattr instead of hasattr 2011-07-25 20:46:30 -05:00
ignore.py ignore: process hgignore files in deterministic order 2012-12-17 15:57:02 -08:00
keepalive.py keepalive: drop python 2.2 legacy code 2012-10-02 14:27:13 -07:00
localrepo.py destroyed: filter unknown before computing branchcache 2013-01-04 19:05:20 +01:00
lock.py lock: fixed race condition in trylock/testlock (issue3506) 2012-09-27 14:38:03 -07:00
lsprof.py lsprof: report units correctly 2012-05-30 13:57:41 -07:00
lsprofcalltree.py drop unused imports 2009-05-14 15:35:46 +02:00
mail.py avoid using abbreviations that look like spelling errors 2012-08-27 23:14:27 +02:00
manifest.py commit: increase perf by building a new addlist instead of editing the old one 2012-11-19 16:05:40 -08:00
match.py fix wording and not-completely-trivial spelling errors and bad docstrings 2012-08-15 22:39:18 +02:00
mdiff.py diff: move index header generation to patch 2012-11-15 15:16:41 -08:00
merge.py util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag 2012-12-28 11:55:57 +01:00
minirst.py spelling: indented 2012-08-17 13:58:18 -07:00
mpatch.c mpatch: use Py_ssize_t for string length 2012-05-20 01:28:31 +02:00
node.py Update license to GPLv2+ 2010-01-19 22:20:08 -06:00
obsolete.py clfilter: add a cache on repo for set of revision to filter for a given set. 2012-12-20 17:14:07 +01:00
osutil.c osutil: tab damage, how i hate thee 2012-12-03 13:17:01 -08:00
parser.py en-us: labeled 2012-08-17 13:58:18 -07:00
parsers.c store: implement fncache basic path encoding in C 2012-09-18 15:42:19 -07:00
patch.py util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag 2012-12-28 11:55:57 +01:00
pathencode.c pathencode: skip encoding if input is already longer than maxstorepathlen 2012-09-30 23:53:56 +02:00
peer.py peer: delete double definition of method peer 2012-07-28 22:36:22 +02:00
phases.py phases: make _filterunknown a member function of phasecache 2013-01-04 06:11:29 +01:00
posix.py util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag 2012-12-28 11:55:57 +01:00
pushkey.py pushkey: do not exchange obsole markers if feature is disabled 2012-07-28 13:33:06 +02:00
pvec.py fix trivial spelling errors 2012-08-15 22:38:42 +02:00
py3kcompat.py spelling: relies 2012-08-17 13:58:18 -07:00
repair.py branchmap: extract updatebranchcache from repo 2012-12-20 14:45:17 +01:00
repoview.py repoview: add a subset table 2013-01-07 17:16:24 +01:00
revlog.py revlog: move ancestor generation out to a new class 2012-12-18 10:14:01 -08:00
revset.py obsolete: add revset and test for divergent changesets 2012-12-12 03:12:55 +01:00
scmutil.py vfs: add a read only vfs 2013-01-04 01:07:25 +01:00
setdiscovery.py delete some dead comments and docstrings 2012-08-21 02:41:20 +02:00
similar.py cleanup: eradicate long lines 2012-05-12 15:54:54 +02:00
simplemerge.py cleanup: "raise SomeException()" -> "raise SomeException" 2012-05-12 16:00:58 +02:00
sshpeer.py peer: introduce real peer classes 2012-07-13 21:47:06 +02:00
sshserver.py sshserver: avoid a multi-dot attribute lookup in a hot loop 2012-09-14 12:09:44 -07:00
sslutil.py ui: optionally quiesce ssl verification warnings on python 2.5 2012-04-09 14:36:16 -07:00
statichttprepo.py branchmap: enable caching for filtered version too 2012-12-24 03:21:15 +01:00
store.py check-code: there must also be whitespace between ')' and operator 2012-12-09 23:33:16 +01:00
strutil.py Update license to GPLv2+ 2010-01-19 22:20:08 -06:00
subrepo.py subrepo: append subrepo path to subrepo error messages 2012-12-13 23:37:53 +01:00
tags.py spelling: supersede 2012-08-17 13:58:19 -07:00
templatefilters.py hgweb: make the escape filter remove null characters (issue2567) 2012-10-15 09:43:34 -07:00
templatekw.py templating: make new-style templating features work with command line lists 2012-09-21 18:54:00 -05:00
templater.py i18n: add "i18n" comment to error messages of template functions 2012-10-31 03:59:27 +09:00
transaction.py spelling: journaling 2012-08-17 13:58:18 -07:00
treediscovery.py util: subclass deque for Python 2.4 backwards compatibility 2012-06-01 17:05:31 -07:00
ui.py check-code: there must also be whitespace between ')' and operator 2012-12-09 23:33:16 +01:00
url.py url: clean up use of two-argument raise 2013-01-01 12:50:46 -06:00
util.h store: implement fncache basic path encoding in C 2012-09-18 15:42:19 -07:00
util.py osutil: write a C implementation of statfiles for unix 2012-12-03 12:40:24 -08:00
verify.py clfilter: verify logic should be unfiltered 2012-10-08 17:08:52 +02:00
win32.py win32: clean up use of two-argument raise 2013-01-01 12:50:23 -06:00
windows.py util: fold ENOENT check into unlinkpath, controlled by new ignoremissing flag 2012-12-28 11:55:57 +01:00
wireproto.py wireproto: fix pushkey hook failure and output on remote http repo 2012-10-15 18:37:34 -03:00