--- a/hgext3rd/evolve/stablerange.py Fri Mar 24 10:12:02 2017 +0100
+++ b/hgext3rd/evolve/stablerange.py Fri Mar 24 10:22:38 2017 +0100
@@ -161,6 +161,7 @@
[
('', 'rev', [], 'operate on (rev, 0) ranges for rev in REVS'),
('', 'subranges', False, 'recursively display data for subranges too'),
+ ('', 'verify', False, 'checks subranges content (EXPENSIVE)'),
],
_(''))
def debugstablerange(ui, repo, **opts):
@@ -185,6 +186,7 @@
ranges = [(r, 0) for r in revs]
if ui.verbose:
template = '%s-%d (%d, %d, %d)'
+
def _rangestring(repo, rangeid):
return template % (
short(node(rangeid[0])),
@@ -195,6 +197,7 @@
)
else:
template = '%s-%d'
+
def _rangestring(repo, rangeid):
return template % (
short(node(rangeid[0])),
@@ -205,7 +208,19 @@
subs = subranges(unfi, r)
subsstr = ', '.join(_rangestring(unfi, s) for s in subs)
rstr = _rangestring(unfi, r)
- ui.status('%s - %s\n' % (rstr, subsstr))
+ if opts['verify']:
+ status = 'leaf'
+ if 1 < length(unfi, r):
+ status = 'complete'
+ revs = set(stablerange.revsfromrange(unfi, r))
+ subrevs = set()
+ for s in subs:
+ subrevs.update(stablerange.revsfromrange(unfi, s))
+ if revs != subrevs:
+ status = 'missing'
+ ui.status('%s [%s] - %s\n' % (rstr, status, subsstr))
+ else:
+ ui.status('%s - %s\n' % (rstr, subsstr))
class stablerange(object):