hgext3rd/evolve/obshistory.py
changeset 5308 0329246c70f3
parent 5307 66a913cc53af
child 5309 9923c6d6f0a8
--- a/hgext3rd/evolve/obshistory.py	Wed Mar 18 19:20:17 2020 +0700
+++ b/hgext3rd/evolve/obshistory.py	Sun Mar 29 17:21:56 2020 +0700
@@ -446,27 +446,23 @@
     """
     fm = ui.formatter(b'debugobshistory', pycompat.byteskwargs(opts))
     predecessors = repo.obsstore.predecessors
-    successors = repo.obsstore.successors
     nodec = repo.changelog.node
     unfi = repo.unfiltered()
     nodes = [nodec(r) for r in revs]
+    seen = set(nodes)
+    toshow = []
 
-    seen = set(nodes)
+    filternonlocal = opts and opts.get('filternonlocal')
+    includediff = opts and opts.get('patch')
 
     while nodes:
         ctxnode = nodes.pop()
 
-        displaynode(fm, unfi, ctxnode)
-
-        succs = successors.get(ctxnode, ())
-
-        markerfm = fm.nested(b"markers")
-        for successor in sorted(succs):
-            includediff = opts and opts.get("patch")
-            displaymarkers(ui, markerfm, successor[1], [successor], ctxnode,
-                           unfi, includediff)
-        markerfm.end()
-        fm.plain(b'\n')
+        if ctxnode in unfi:
+            toshow.append(unfi[ctxnode])
+        else:
+            if filternonlocal is False:
+                toshow.append(missingchangectx(unfi, ctxnode))
 
         preds = predecessors.get(ctxnode, ())
         for p in sorted(preds):
@@ -474,6 +470,21 @@
             if p[0] not in seen:
                 seen.add(p[0])
                 nodes.append(p[0])
+
+    for ctx in toshow:
+        displaynode(fm, unfi, ctx.node())
+
+        markerfm = fm.nested(b"markers")
+
+        data = _nodesandmarkers(repo, ctx, filternonlocal)
+        for nodes_, markers in data:
+            displaymarkers(ui, markerfm, nodes_, markers, ctx.node(), unfi,
+                           includediff)
+
+        markerfm.end()
+
+        fm.plain(b'\n')
+
     fm.end()
 
 def displaynode(fm, repo, node):