diff --git a/mercurial/changegroup.py b/mercurial/changegroup.py --- a/mercurial/changegroup.py +++ b/mercurial/changegroup.py @@ -334,6 +334,7 @@ class cg1unpacker(object): deltas, csmap, trp, + alwayscache=True, addrevisioncb=onchangelog, duplicaterevisioncb=ondupchangelog, ): diff --git a/mercurial/exchangev2.py b/mercurial/exchangev2.py --- a/mercurial/exchangev2.py +++ b/mercurial/exchangev2.py @@ -423,6 +423,7 @@ def _processchangesetdata(repo, tr, objs iterrevisions(), linkrev, weakref.proxy(tr), + alwayscache=True, addrevisioncb=onchangeset, duplicaterevisioncb=ondupchangeset, ) diff --git a/mercurial/interfaces/repository.py b/mercurial/interfaces/repository.py --- a/mercurial/interfaces/repository.py +++ b/mercurial/interfaces/repository.py @@ -769,7 +769,13 @@ class ifilemutation(interfaceutil.Interf ``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. diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -1836,6 +1836,7 @@ class manifestrevlog(object): deltas, linkmapper, transaction, + alwayscache=False, addrevisioncb=None, duplicaterevisioncb=None, ): @@ -1843,6 +1844,7 @@ class manifestrevlog(object): deltas, linkmapper, transaction, + alwayscache=alwayscache, addrevisioncb=addrevisioncb, duplicaterevisioncb=duplicaterevisioncb, ) diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -2375,6 +2375,7 @@ class revlog(object): deltas, linkmapper, transaction, + alwayscache=False, addrevisioncb=None, duplicaterevisioncb=None, ): @@ -2475,7 +2476,7 @@ class revlog(object): (baserev, delta), ifh, dfh, - alwayscache=bool(addrevisioncb), + alwayscache=alwayscache, deltacomputer=deltacomputer, ) diff --git a/mercurial/unionrepo.py b/mercurial/unionrepo.py --- a/mercurial/unionrepo.py +++ b/mercurial/unionrepo.py @@ -128,6 +128,7 @@ class unionrevlog(revlog.revlog): deltas, linkmapper, transaction, + alwayscache=False, addrevisioncb=None, duplicaterevisioncb=None, maybemissingparents=False,