changeset 2215:6d9cadc635d5

merge-slicing: simplify various aspect of the code Especially the case were the bottom have single heads is not more efficiently handled.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Fri, 24 Mar 2017 05:51:20 +0100
parents 14e876c5e1c3
children de76219b42b8
files hgext3rd/evolve/stablerange.py
diffstat 1 files changed, 7 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/stablerange.py	Thu Mar 23 14:17:15 2017 +0100
+++ b/hgext3rd/evolve/stablerange.py	Fri Mar 24 05:51:20 2017 +0100
@@ -418,12 +418,11 @@
         result = []
         allrevs = self.revsfromrange(repo, rangeid)
         bottomrevs = allrevs[:localindex]
-        top = (rangeid[0], globalindex)
-        #
-        rangedepth = self.depthrev(repo, rangeid[0])
-        maxbottomdepth = self.depthrev(repo, bottomrevs[-1])
-        if maxbottomdepth + self.rangelength(repo, top) == rangedepth:
-            bheads = [bottomrevs[-1]]
+
+        if globalindex == self.depthrev(repo, bottomrevs[-1]):
+            # simple case, top revision in the bottom set contains exactly the
+            # revision we needs
+            result.append((bottomrevs[-1], rangeid[1]))
         else:
             bheads = set(bottomrevs)
             parentrevs = cl.parentrevs
@@ -431,23 +430,14 @@
             du = bheads.difference_update
             for r in bottomrevs:
                 du(parents(r, parentrevs))
-            # if len(bheads) == 1:
-            #     assert 1 == len(repo.revs('roots(%ld)', top._revs))
-        if len(bheads) == 1:
-            newhead = bottomrevs[-1]
-            bottomdepth = self.depthrev(repo, newhead)
-            newstart = bottomdepth - len(bottomrevs)
-            bottom = (newhead, newstart)
-            result.append(bottom)
-        else:
-            # assert 1 < len(bheads), (toprootdepth, len(top), len(rangeid))
-            cl = repo.changelog
             for h in bheads:
                 subset = cl.ancestors([h], inclusive=True)
                 hrevs = [r for r in bottomrevs if r in subset]
                 start = self.depthrev(repo, h) - len(hrevs)
                 entry = (h, start)
                 result.append(entry)
+        # top part is trivial
+        top = (rangeid[0], globalindex)
         result.append(top)
         return result