# HG changeset patch # User Anton Shestakov # Date 1584360813 -25200 # Node ID 1e2f3fa129f2ba2e8ac686012b91efc9eef9f776 # Parent 292de4cca11126a5662ea8db7afdea0f369e8123 obshistory: prepare data for displaymarkers() in a separate function diff -r 292de4cca111 -r 1e2f3fa129f2 hgext3rd/evolve/obshistory.py --- a/hgext3rd/evolve/obshistory.py Mon Jan 13 16:32:25 2020 +0700 +++ b/hgext3rd/evolve/obshistory.py Mon Mar 16 19:13:33 2020 +0700 @@ -136,6 +136,19 @@ b"patch": TEMPLATE_PATCH, } +def _nodesandmarkers(repo, ctx, filternonlocal): + if filternonlocal: + r = obsutil.successorsandmarkers(repo, ctx) + if r is None: + r = [] + for succset in sorted(r): + if succset[b'markers']: + yield (succset[b'successors'], succset[b'markers']) + else: + markers = repo.obsstore.successors.get(ctx.node(), ()) + for marker in sorted(markers): + yield (marker[1], [marker]) + class obsmarker_printer(logcmdutil.changesetprinter): """show (available) information about a node @@ -173,28 +186,10 @@ markerfm = fm.nested(b"markers") - # Succs markers - if self.filter is False: - succs = self.repo.obsstore.successors.get(changenode, ()) - succs = sorted(succs) - - for successor in succs: - displaymarkers(self.ui, markerfm, successor[1], - [successor], ctx.node(), self.repo, - self._includediff) - - else: - r = obsutil.successorsandmarkers(self.repo, ctx) - if r is None: - r = [] - - for succset in sorted(r): - markers = succset[b"markers"] - if not markers: - continue - successors = succset[b"successors"] - displaymarkers(self.ui, markerfm, successors, markers, - ctx.node(), self.repo, self._includediff) + data = _nodesandmarkers(self.repo, ctx, self.filter) + for nodes, markers in data: + displaymarkers(self.ui, markerfm, nodes, markers, ctx.node(), + self.repo, self._includediff) markerfm.end()