# HG changeset patch # User Yuya Nishihara # Date 1521276873 -32400 # Node ID e7bc0667c52105e7c0b32db5973eb2a465900c12 # Parent 7db3c28dfdfd7c86d4847ca003cd36bebb2c1dbc formatter: make 'originalnode' a thing in log-like templates mapping['node'] doesn't work since {node} is computed dynamically in non-web templates. diff -r 7db3c28dfdfd -r e7bc0667c521 mercurial/formatter.py --- a/mercurial/formatter.py Sat Mar 17 17:41:07 2018 +0900 +++ b/mercurial/formatter.py Sat Mar 17 17:54:33 2018 +0900 @@ -514,8 +514,10 @@ mapping = {} if self._hasctx(newmapping): mapping['revcache'] = {} # per-ctx cache - if 'node' in origmapping and 'node' in newmapping: - mapping['originalnode'] = origmapping['node'] + if (('node' in origmapping or self._hasctx(origmapping)) + and ('node' in newmapping or self._hasctx(newmapping))): + orignode = templateutil.runsymbol(context, origmapping, 'node') + mapping['originalnode'] = orignode return mapping def _getsome(self, context, mapping, key): diff -r 7db3c28dfdfd -r e7bc0667c521 tests/test-command-template.t --- a/tests/test-command-template.t Sat Mar 17 17:41:07 2018 +0900 +++ b/tests/test-command-template.t Sat Mar 17 17:54:33 2018 +0900 @@ -4199,6 +4199,13 @@ hg: parse error: invalid argument for revspec [255] +Test 'originalnode' + + $ hg log -r 1 -T '{revset("null") % "{node|short} {originalnode|short}"}\n' + 000000000000 bcc7ff960b8e + $ hg log -r 0 -T '{manifest % "{node} {originalnode}"}\n' + a0c8bcbbb45c63b90b70ad007bf38961f64f2af0 f7769ec2ab975ad19684098ad1ffd9b81ecc71a1 + Test files function $ hg log -T "{rev}\n{join(files('*'), '\n')}\n"