delta-find: make sure we only use newer full snapshot as candidate
authorPierre-Yves David <pierre-yves.david@octobus.net>
Sun, 06 Nov 2022 17:55:55 -0500
changeset 49680 40e24d82b513
parent 49679 b670eb3dd6c9
child 49681 c261a628e525
delta-find: make sure we only use newer full snapshot as candidate The current code does not needs to protect against this, as there are no older snapshot in the current cache. However as we are getting ready to reuse this cache from one revision to another, we need the code to protect itself about what's coming.
mercurial/revlogutils/deltas.py
--- a/mercurial/revlogutils/deltas.py	Sun Nov 06 17:55:46 2022 -0500
+++ b/mercurial/revlogutils/deltas.py	Sun Nov 06 17:55:55 2022 -0500
@@ -977,7 +977,8 @@
         # revisions instead of starting our own. Without such re-use,
         # topological branches would keep reopening new full chains. Creating
         # more and more snapshot as the repository grow.
-        yield tuple(snapshot_cache.snapshots[nullrev])
+        full = [r for r in snapshot_cache.snapshots[nullrev] if snapfloor <= r]
+        yield tuple(sorted(full))
 
     if not sparse:
         # other approach failed try against prev to hopefully save us a