sapling/edenscm/mercurial
Mark Thomas d562032896 mutation: improve performance of obsolete check
Summary:
The computation of whether a commit is obsolete or not can be improved.

We can cache which commits are known to not be obsolete.

We can also have a cache for each filter type so that we only need to compute
obsolete nodes that match the filter.

Finally, when we need to compute all obsolete commits, we can start by looking
for commits which are made obsolete by only their closest successors, and then
filling back obsolescence to the predecessors of these obsolete commits.

Reviewed By: DurhamG

Differential Revision: D14858655

fbshipit-source-id: 1d03e214ad878ecb6ae548f80373702e2a184146
2019-04-11 02:45:16 -07:00
..
cext osutil: detect fuse on Linux 2019-02-06 18:34:30 -08:00
cffi flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
commands visibility: make enabling or disabling of tracking a command 2019-04-11 02:45:15 -07:00
default.d codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
help visibility: make enabling or disabling of tracking a command 2019-04-11 02:45:15 -07:00
hgweb subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
httpclient codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
pure codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
rust edenapi: make data and history batch sizes separately configurable 2019-04-09 17:00:01 -07:00
templates codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
thirdparty codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
__init__.py codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
ancestor.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
archival.py archive: prefetch remotefilelog files before executing archive 2019-03-14 14:57:50 -07:00
bdiff.c codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
bdiff.h codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
bitmanipulation.h codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
bookmarks.py bookmarks: remove branch name collision check 2019-03-08 16:33:20 -08:00
branchmap.py branchmap: drop revbranchcache and other unused logic 2019-02-22 21:02:41 -08:00
bundle2.py tracing: add various tracing across the code base 2019-03-25 19:31:13 -07:00
bundlerepo.py pushrebase: fix pushrebase for treeonly lfs pushes 2019-03-29 13:57:54 -07:00
byterange.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
changegroup.py mutation: create mutation store entries for local commits 2019-03-27 04:49:12 -07:00
changelog.py changelog: cache commit files list 2019-02-05 15:52:00 -08:00
chgserver.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
cmdutil.py mutation: record predecessors and operation in commit loginfo 2019-04-10 15:16:17 -07:00
color.py metrics: make ui.metrics.gauge log to the sampling extension 2019-03-20 22:49:18 -07:00
commandserver.py commandserver: import mercurial.__version__ from the right place 2019-02-05 09:47:34 -08:00
compat.h codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
config.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
configitems.py visibility: make enabling or disabling of tracking a command 2019-04-11 02:45:15 -07:00
connectionpool.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
context.py context: add loginfo for committable contexts 2019-04-04 11:29:50 -07:00
copies.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
crecord.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
dagop.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
dagparser.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
dagutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
debugcommands.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
destutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
dirstate.py dirstate: add checkoutidentifier to identify and correlate checkouts 2019-04-04 11:29:49 -07:00
dirstateguard.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
discovery.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
dispatch.py dispatch: print shorter crash header 2019-04-04 23:38:34 -07:00
drawdag.py mutation: prefix predecessor hashes with hashing scheme 2019-03-27 04:49:12 -07:00
dummycert.pem codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
eden_dirstate_map.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
eden_dirstate.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
eden_update.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
edenfs.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
EdenThriftClient.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
encoding.py encoding: alias cp65001 to utf-8 on Windows 2019-02-11 09:16:02 -08:00
entrypoint.py chg: make it incompatible with upstream chg server 2019-02-08 16:12:53 -08:00
error.py hook: make it possible to record stderr of failed python hooks 2019-02-22 05:10:46 -08:00
exchange.py remove accidentally added lines 2019-04-10 00:45:56 -07:00
executionmodel.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
extensions.py extensions: always enable the sampling extension 2019-03-20 22:49:18 -07:00
fancyopts.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
filelog.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
filemerge.py config: enable merge.printcandidatecommmits 2019-03-08 19:55:46 -08:00
fileset.py ignore: disable hgignore by default 2019-03-20 22:32:58 -07:00
formatter.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
fscap.py fscap: mark "fuse.ntfs" (ntfs-3g) as not supporting symlinks 2019-02-06 18:34:30 -08:00
graphmod.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
hbisect.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
help.py ignore: disable hgignore by default 2019-03-20 22:32:58 -07:00
hg.py tracing: add various tracing across the code base 2019-03-25 19:31:13 -07:00
hintutil.py commands: replace "branch" command with deprecation warnings 2019-02-14 17:44:40 -08:00
hook.py hook: make "mercurial" module available for Python hooks 2019-03-08 16:04:38 -08:00
httpconnection.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
httppeer.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
i18n.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
identity.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
interpreter.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
json.py codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
keepalive.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
localrepo.py visibility: make enabling or disabling of tracking a command 2019-04-11 02:45:15 -07:00
lock.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
lsprof.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
lsprofcalltree.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mail.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
manifest.py manifest: drop manifestv2 support 2019-03-26 13:32:45 -07:00
match.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
mdiff.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
merge.py tracing: add various tracing across the code base 2019-03-25 19:31:13 -07:00
mergeutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
metrics.py metrics: make ui.metrics.gauge log to the sampling extension 2019-03-20 22:49:18 -07:00
minirst.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mpatch.c codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mpatch.h codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mutation.py mutation: improve performance of obsolete check 2019-04-11 02:45:16 -07:00
namespaces.py branch: disable branchcache and drop all branches other than "default" 2019-02-22 21:02:41 -08:00
node.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
obsolete.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
obsutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
parser.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
patch.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
pathutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
peer.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
perftrace.py tracing: log perftraces to the blackbox 2019-03-25 17:12:42 -07:00
phases.py tracing: add various tracing across the code base 2019-03-25 19:31:13 -07:00
policy.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
posix.py posix: detect fuse.ntfs on Linux 2019-02-06 18:34:30 -08:00
profiling.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
progress.py progress: reduce overhead when a nested bar is used in a loop 2019-03-29 20:32:22 -07:00
pushkey.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
pvec.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
pycompat.py posix: detect fuse.ntfs on Linux 2019-02-06 18:34:30 -08:00
rcutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
registrar.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
repair.py visibility: update visibility when commits are modified 2019-03-08 03:05:58 -08:00
replay.py replay: only expect timestamp and not timezone 2019-02-20 08:47:25 -08:00
repository.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
repoview.py visibility: update visibility when commits are modified 2019-03-08 03:05:58 -08:00
revlog.py revlog: drop v0 and v2 support 2019-03-26 13:32:45 -07:00
revset.py mutation: remove instabilities revsets 2019-03-27 04:49:12 -07:00
revsetlang.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
rewriteutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
scmposix.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
scmutil.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
scmwindows.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
server.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
setdiscovery.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
similar.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
simplemerge.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
smartset.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
sparse.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
sshpeer.py metrics: add metrics about fetching remote data 2019-03-20 22:49:18 -07:00
sshserver.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
sslutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
statichttprepo.py branchmap: drop revbranchcache and other unused logic 2019-02-22 21:02:41 -08:00
statprof.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
store.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
streamclone.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
tagmerge.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
tags.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
templatefilters.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
templatekw.py subrepo: remove subrepo support 2019-03-11 10:43:55 -07:00
templater.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
transaction.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
treedirstate.py rust: move bindings to a single python extension 2019-02-01 17:53:22 -08:00
treediscovery.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
treestate.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
txnutil.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
ui.py Back out "[hg] ui: do not enable SIGPIPE when running the pager" 2019-03-25 18:33:05 -07:00
unionrepo.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
upgrade.py manifest: drop manifestv2 support 2019-03-26 13:32:45 -07:00
url.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
urllibcompat.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
util.py util: extract makerandomidentifier from clienttelemetry 2019-04-04 11:29:49 -07:00
verify.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
vfs.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
visibility.py visibility: make enabling or disabling of tracking a command 2019-04-11 02:45:15 -07:00
win32.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
windows.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
wireproto.py flake8: fix lints for unused imports and variables 2019-02-27 06:26:06 -08:00
worker.py codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00