diff mercurial/revlog.py @ 49877:152d9c011bcd

changegroup: add `delta_base_reuse_policy` argument The argument available through function from changegroup.apply to `revlog.apply` allow to override the revlog configuration in terms of delta-base-reuse policy when searching for a delta to store a revision. It will be put to use in the next changesets.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 03 Dec 2022 01:31:23 +0100
parents 05db41701ece
children 9854a9adc466
line wrap: on
line diff
--- a/mercurial/revlog.py	Sat Dec 03 01:16:22 2022 +0100
+++ b/mercurial/revlog.py	Sat Dec 03 01:31:23 2022 +0100
@@ -2663,6 +2663,7 @@
         addrevisioncb=None,
         duplicaterevisioncb=None,
         debug_info=None,
+        delta_base_reuse_policy=None,
     ):
         """
         add a delta group
@@ -2678,6 +2679,14 @@
         if self._adding_group:
             raise error.ProgrammingError(b'cannot nest addgroup() calls')
 
+        # read the default delta-base reuse policy from revlog config if the
+        # group did not specify one.
+        if delta_base_reuse_policy is None:
+            if self._generaldelta and self._lazydeltabase:
+                delta_base_reuse_policy = DELTA_BASE_REUSE_TRY
+            else:
+                delta_base_reuse_policy = DELTA_BASE_REUSE_NO
+
         self._adding_group = True
         empty = True
         try:
@@ -2758,7 +2767,7 @@
                         p1,
                         p2,
                         flags,
-                        (baserev, delta),
+                        (baserev, delta, delta_base_reuse_policy),
                         alwayscache=alwayscache,
                         deltacomputer=deltacomputer,
                         sidedata=sidedata,