diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py --- a/mercurial/templatekw.py +++ b/mercurial/templatekw.py @@ -119,6 +119,16 @@ def _showlist(name, values, plural=None, if endname in templ: yield templ(endname, **args) +def _formatrevnode(ctx): + """Format changeset as '{rev}:{node|formatnode}', which is the default + template provided by cmdutil.changeset_templater""" + repo = ctx.repo() + if repo.ui.debugflag: + hexnode = ctx.hex() + else: + hexnode = ctx.hex()[:12] + return '%d:%s' % (scmutil.intrev(ctx.rev()), hexnode) + def getfiles(repo, ctx, revcache): if 'files' not in revcache: revcache['files'] = repo.status(ctx.p1(), ctx)[:3] @@ -523,7 +533,8 @@ def showparents(**args): ('phase', p.phasestr())] for p in pctxs] f = _showlist('parent', parents, **args) - return _hybrid(f, prevs, lambda x: {'ctx': repo[int(x)], 'revcache': {}}) + return _hybrid(f, prevs, lambda x: {'ctx': repo[int(x)], 'revcache': {}}, + lambda d: _formatrevnode(d['ctx'])) @templatekeyword('phase') def showphase(repo, ctx, templ, **args): diff --git a/tests/test-command-template.t b/tests/test-command-template.t --- a/tests/test-command-template.t +++ b/tests/test-command-template.t @@ -3438,6 +3438,16 @@ join() should pick '{rev}' from revset i $ hg log -R ../a -T '{join(revset("parents(%d)", rev), ", ")}\n' -r6 4, 5 +on the other hand, parents are formatted as '{rev}:{node|formatnode}' by +default. join() should agree with the default formatting: + + $ hg log -R ../a -T '{join(parents, ", ")}\n' -r6 + 5:13207e5a10d9, 4:bbe44766e73d + + $ hg log -R ../a -T '{join(parents, ",\n")}\n' -r6 --debug + 5:13207e5a10d9fd28ec424934298e176197f2c67f, + 4:bbe44766e73d5f11ed2177f1838de10c53ef3e74 + Test active bookmark templating $ hg book foo