# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1700772291 -3600
#      Thu Nov 23 21:44:51 2023 +0100
# Node ID 94fe4474b0533ddf75fcd0f27db5686e9a9d7f19
# Parent  5cc04a6da19d0f4e730f894906cb26c4cadd9a26
delta-find: move the emotion of prev in a dedicated method

After splitting the filtering, and with the `_candidate_groups` layer removed,
we can start splitting the group generation too. This helps to organize this
code and make it easier to modifying the future.

diff --git a/mercurial/revlogutils/deltas.py b/mercurial/revlogutils/deltas.py
--- a/mercurial/revlogutils/deltas.py
+++ b/mercurial/revlogutils/deltas.py
@@ -1074,6 +1074,12 @@
             # Test all parents (1 or 2), and keep the best candidate
             yield parents
 
+    def _iter_prev(self):
+        # other approach failed try against prev to hopefully save us a
+        # fulltext.
+        self.current_stage = _STAGE_PREV
+        yield (self.target_rev - 1,)
+
     def _refined_groups(self):
         good = None
         groups = self._raw_groups()
@@ -1221,10 +1227,7 @@
             yield tuple(sorted(full))
 
         if not sparse:
-            # other approach failed try against prev to hopefully save us a
-            # fulltext.
-            self.current_stage = _STAGE_PREV
-            yield (prev,)
+            yield from self._iter_prev()
 
 
 class SnapshotCache: