changeset 2314:9e30934d4487

stablerange: rearrange the reusing logic to prepare to merge We'll soon be able to reuse some lower range when dealing with merge too. So we prepare the code for this in advance for clarity.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Fri, 24 Mar 2017 08:20:36 +0100
parents 37fa3d83f294
children d83bf4773433
files hgext3rd/evolve/stablerange.py
diffstat 1 files changed, 16 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/stablerange.py
+++ b/hgext3rd/evolve/stablerange.py
@@ -391,25 +391,24 @@
         p1, p2 = self._parents(rangeid[0], repo.changelog.parentrevs)
         if p2 != nodemod.nullrev:
             return self._slicesrangeatmerge(repo, rangeid, globalindex)
-        assert p1 != nodemod.nullrev
-        rangedepth = self.depthrev(repo, rangeid[0])
-        topsize = rangedepth - globalindex
+
+        reuserev = p1
 
-        parentrange = (p1, rangeid[1])
+        assert reuserev != nodemod.nullrev
+
+        reuserange = (reuserev, rangeid[1])
+        top = (rangeid[0], globalindex)
 
-        if topsize == 1:
-            top = (rangeid[0], globalindex)
-            return [parentrange, top]
-        else:
-            # This will not initiate a recursion since we took appropriate
-            # precaution in the caller of this method to ensure it will be so.
-            # It the parent is a merge that will not be the case but computing
-            # subranges from a merge will not recurse.
-            parentsubranges = self.subranges(repo, parentrange)
-            slices = parentsubranges[:-1] # pop the top
-            top = (rangeid[0], globalindex)
-            slices.append(top)
-            return slices
+        if rangeid[1] + self.rangelength(repo, reuserange) == globalindex:
+            return [reuserange, top]
+        # This will not initiate a recursion since we took appropriate
+        # precaution in the caller of this method to ensure it will be so.
+        # It the parent is a merge that will not be the case but computing
+        # subranges from a merge will not recurse.
+        reusesubranges = self.subranges(repo, reuserange)
+        slices = reusesubranges[:-1] # pop the top
+        slices.append(top)
+        return slices
 
     def _slicesrangeatmerge(self, repo, rangeid, globalindex):
         localindex = globalindex - rangeid[1]