Mercurial > hg
changeset 46373:711ba0f1057e
revlog: decouple caching from addrevision callback for addgroup
For changesets, it is useful to cache the content as it will almost
always be processed afterwards. For manifests on the other hand, the
content is often not used directly as there is a fast path for deltas.
Explicitly disable the cache in exchangev2's manifest handling for that
reason.
Differential Revision: https://phab.mercurial-scm.org/D9847
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 20 Jan 2021 14:47:13 +0100 |
parents | 3e91d9978bec |
children | e92ca942ddca |
files | mercurial/changegroup.py mercurial/exchangev2.py mercurial/interfaces/repository.py mercurial/manifest.py mercurial/revlog.py mercurial/unionrepo.py |
diffstat | 6 files changed, 13 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/changegroup.py Fri Jan 15 01:58:59 2021 +0100 +++ b/mercurial/changegroup.py Wed Jan 20 14:47:13 2021 +0100 @@ -334,6 +334,7 @@ deltas, csmap, trp, + alwayscache=True, addrevisioncb=onchangelog, duplicaterevisioncb=ondupchangelog, ):
--- a/mercurial/exchangev2.py Fri Jan 15 01:58:59 2021 +0100 +++ b/mercurial/exchangev2.py Wed Jan 20 14:47:13 2021 +0100 @@ -423,6 +423,7 @@ iterrevisions(), linkrev, weakref.proxy(tr), + alwayscache=True, addrevisioncb=onchangeset, duplicaterevisioncb=ondupchangeset, )
--- a/mercurial/interfaces/repository.py Fri Jan 15 01:58:59 2021 +0100 +++ b/mercurial/interfaces/repository.py Wed Jan 20 14:47:13 2021 +0100 @@ -769,7 +769,13 @@ ``nullid``, in which case the header from the delta can be ignored and the delta used as the fulltext. + ``alwayscache`` instructs the lower layers to cache the content of the + newly added revision, even if it needs to be explicitly computed. + This used to be the default when ``addrevisioncb`` was provided up to + Mercurial 5.8. + ``addrevisioncb`` should be called for each node as it is committed. + ``duplicaterevisioncb`` should be called for each pre-existing node. ``maybemissingparents`` is a bool indicating whether the incoming data may reference parents/ancestor revisions that aren't present.
--- a/mercurial/manifest.py Fri Jan 15 01:58:59 2021 +0100 +++ b/mercurial/manifest.py Wed Jan 20 14:47:13 2021 +0100 @@ -1836,6 +1836,7 @@ deltas, linkmapper, transaction, + alwayscache=False, addrevisioncb=None, duplicaterevisioncb=None, ): @@ -1843,6 +1844,7 @@ deltas, linkmapper, transaction, + alwayscache=alwayscache, addrevisioncb=addrevisioncb, duplicaterevisioncb=duplicaterevisioncb, )
--- a/mercurial/revlog.py Fri Jan 15 01:58:59 2021 +0100 +++ b/mercurial/revlog.py Wed Jan 20 14:47:13 2021 +0100 @@ -2375,6 +2375,7 @@ deltas, linkmapper, transaction, + alwayscache=False, addrevisioncb=None, duplicaterevisioncb=None, ): @@ -2475,7 +2476,7 @@ (baserev, delta), ifh, dfh, - alwayscache=bool(addrevisioncb), + alwayscache=alwayscache, deltacomputer=deltacomputer, )