Mercurial > hg-stable
diff mercurial/templatekw.py @ 32897:1858fc2327ef
template: add predecessors template
Add a 'predecessors' template that returns the list of all closest known
predecessors for a changectx. The elements of the list are row changectx node id
formatted by default as short nodes.
The "closest predecessors" are the first locally known revisions encountered
while, walking predecessors markers. For example:
1) If a (A, (B)) markers exists and both A and B are locally known A is a
closest predecessors of B.
2) If a (A, (B)) and (B, (C)) markers exists and only A and C are known
locally, A will be the closest precursors of C.
This logic respect repository filtering. So hidden revision will be skipped by
this logic unless --hidden is specified. Since we only display the visible
predecessors, this template will not display anything in most case. It makes a
good candidate for inclusion in the default log output.
I added a new test-file for testing the precursors in various scenarios. This
test file will also be used for the successors template.
A new "obsutil" module has been added to start gathering utility function
outside of the large obsolete.py module.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Thu, 15 Jun 2017 13:02:58 +0200 |
parents | 55ff67ffcead |
children | 89610c586fa2 |
line wrap: on
line diff
--- a/mercurial/templatekw.py Sat Apr 22 20:29:45 2017 +0900 +++ b/mercurial/templatekw.py Thu Jun 15 13:02:58 2017 +0200 @@ -18,6 +18,7 @@ encoding, error, hbisect, + obsutil, patch, registrar, scmutil, @@ -560,6 +561,16 @@ return 'obsolete' return '' +@templatekeyword("predecessors") +def showpredecessors(repo, ctx, **args): + """Returns the list if the closest visible successors + """ + predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node())) + predecessors = map(hex, predecessors) + + return _hybrid(None, predecessors, lambda x: {'predecessor': x}, + lambda d: d['predecessor'][:12]) + @templatekeyword('p1rev') def showp1rev(repo, ctx, templ, **args): """Integer. The repository-local revision number of the changeset's