--- a/hgext3rd/evolve/__init__.py Fri May 12 11:39:41 2017 +0200
+++ b/hgext3rd/evolve/__init__.py Fri May 12 18:34:37 2017 +0200
@@ -3267,22 +3267,25 @@
revs = scmutil.revrange(repo, revs)
fm = ui.formatter('debugobshistory', opts)
- for rev in revs:
- _debugobshistorysingle(ui, fm, repo, rev)
+ revs.reverse()
+ _debugobshistorysingle(fm, repo, revs)
fm.end()
-def _debugobshistorysingle(ui, fm, repo, rev):
+def _debugobshistorysingle(fm, repo, revs):
""" Display the obsolescence history for a single revision
"""
precursors = repo.obsstore.precursors
successors = repo.obsstore.successors
nodec = repo.changelog.node
- nodes = [nodec(rev)]
+ nodes = [nodec(r) for r in revs]
+
+ seen = set(nodes)
while nodes:
ctxnode = nodes.pop()
- _debugobshistorydisplaynode(ui, fm, repo, ctxnode)
+
+ _debugobshistorydisplaynode(fm, repo, ctxnode)
succs = successors.get(ctxnode, ())
@@ -3292,9 +3295,13 @@
markerfm.end()
precs = precursors.get(ctxnode, ())
- nodes.extend(precursor[0] for precursor in sorted(precs))
-
-def _debugobshistorydisplaynode(ui, fm, repo, node):
+ for p in sorted(precs):
+ # Only show nodes once
+ if p[0] not in seen:
+ seen.add(p[0])
+ nodes.append(p[0])
+
+def _debugobshistorydisplaynode(fm, repo, node):
if node in repo.unfiltered():
_debugobshistorydisplayctx(fm, repo.unfiltered()[node])
else: