changeset 51776:e1fd715df257

manifest: allow skipping valid_bases argument to `read_any_fast_delta` In some case it make sens to just want a delta. So we update the API to support this.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 01 Aug 2024 13:40:46 +0200
parents ca4208713875
children 87a8190e66fe
files mercurial/interfaces/repository.py mercurial/manifest.py
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/interfaces/repository.py	Thu Aug 01 05:35:06 2024 +0200
+++ b/mercurial/interfaces/repository.py	Thu Aug 01 13:40:46 2024 +0200
@@ -1187,7 +1187,7 @@
         The returned object conforms to the ``imanifestdict`` interface.
         """
 
-    def read_any_fast_delta(valid_bases, *, shallow=False):
+    def read_any_fast_delta(valid_bases=None, *, shallow=False):
         """read some manifest information as fast if possible
 
         This might return a "delta", a manifest object containing only file
--- a/mercurial/manifest.py	Thu Aug 01 05:35:06 2024 +0200
+++ b/mercurial/manifest.py	Thu Aug 01 13:40:46 2024 +0200
@@ -2264,7 +2264,7 @@
 
     def read_any_fast_delta(
         self,
-        valid_bases: Collection[int],
+        valid_bases: Optional[Collection[int]] = None,
         *,
         shallow: bool = False,
     ) -> Tuple[Optional[int], ManifestDict]:
@@ -2272,6 +2272,9 @@
         store = self._storage()
         r = store.rev(self._node)
         deltaparent = store.deltaparent(r)
+        if valid_bases is None:
+            # make sure the next check is True
+            valid_bases = (deltaparent,)
         if deltaparent != nullrev and deltaparent in valid_bases:
             d = mdiff.patchtext(store.revdiff(deltaparent, r))
             return (
@@ -2419,7 +2422,7 @@
 
     def read_any_fast_delta(
         self,
-        valid_bases: Collection[int],
+        valid_bases: Optional[Collection[int]] = None,
         *,
         shallow: bool = False,
     ) -> Tuple[Optional[int], AnyManifestDict]:
@@ -2428,6 +2431,9 @@
         r = store.rev(self._node)
         deltaparent = store.deltaparent(r)
 
+        if valid_bases is None:
+            # make sure the next check is True
+            valid_bases = (deltaparent,)
         can_use_delta = deltaparent != nullrev and deltaparent in valid_bases
 
         if shallow: