changeset 2233:dd8ed58bf79c

stablerange: move the subrangesclosure inside the module This seems more suitable and open the way to simple update of how we build things without too much impact outside the module. The debug command is still in the 'obsdiscovery' module because it also deal to obshash and I'm not sure of were this should live yet.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Wed, 22 Mar 2017 05:09:21 +0100
parents 086a85c37e9e
children 393fabaf4039
files hgext3rd/evolve/obsdiscovery.py hgext3rd/evolve/stablerange.py
diffstat 2 files changed, 18 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/hgext3rd/evolve/obsdiscovery.py
+++ b/hgext3rd/evolve/obsdiscovery.py
@@ -393,16 +393,7 @@
     revs = scmutil.revrange(repo, opts['rev'])
     # prewarm depth cache
     repo.stablerange.warmup(repo, revs)
-    toproceed = [stablerange.stablerange(repo, r, 0, ) for r in revs]
-    ranges = set(toproceed)
-    while toproceed:
-        entry = toproceed.pop()
-        for r in entry.subranges():
-            if r not in ranges:
-                ranges.add(r)
-                toproceed.append(r)
-    ranges = list(ranges)
-    ranges.sort(key=lambda r: (-len(r), r.node))
+    ranges = stablerange.subrangesclosure(repo, revs)
     ui.status('rev         node index size depth      obshash\n')
     for r in ranges:
         d = (r.head, s(r.node), r.index, len(r), r.depth, node.short(r.obshash))
--- a/hgext3rd/evolve/stablerange.py
+++ b/hgext3rd/evolve/stablerange.py
@@ -132,6 +132,23 @@
 ### Stable Range computation  ###
 #################################
 
+def subrangesclosure(repo, heads):
+    """set of all standard subrange under heads
+
+    This is intended for debug purposes. Range are returned from largest to
+    smallest in terms of number of revision it contains."""
+    toproceed = [stablerange(repo, r, 0, ) for r in heads]
+    ranges = set(toproceed)
+    while toproceed:
+        entry = toproceed.pop()
+        for r in entry.subranges():
+            if r not in ranges:
+                ranges.add(r)
+                toproceed.append(r)
+    ranges = list(ranges)
+    ranges.sort(key=lambda r: (-len(r), r.node))
+    return ranges
+
 class stablerangecache(dict):
 
     def __init__(self):