From patchwork Fri Jul 22 14:55:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1,of,2,STABLE] templatekw: fix join format of revset() function From: Yuya Nishihara X-Patchwork-Id: 15971 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Fri, 22 Jul 2016 23:55:06 +0900 # HG changeset patch # User Yuya Nishihara # Date 1469192446 -32400 # Fri Jul 22 22:00:46 2016 +0900 # Branch stable # Node ID c95239e03e854d54ad0035490392c4c39e28a742 # Parent d3df009ab1175a6792549b51ae66486dd98f398b templatekw: fix join format of revset() function It's been broken since e4609ec959f8, which made makemap() return a dict of multiple keywords. Because the default joinfmt() randomly picks one item from a dict, we have to make revset() select d[name] explicitly. diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py --- a/mercurial/templatekw.py +++ b/mercurial/templatekw.py @@ -547,7 +547,8 @@ def showrevslist(name, revs, **args): revs = [str(r) for r in revs] # ifcontains() needs a list of str f = _showlist(name, revs, **args) return _hybrid(f, revs, - lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}}) + lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}}, + lambda d: d[name]) @templatekeyword('subrepos') def showsubrepos(**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 @@ -3433,6 +3433,11 @@ a revset item must be evaluated as an in $ hg log -l 1 -T '{revset("%s", "null") % "{rev}:{node|short}"}\n' -1:000000000000 +join() should pick '{rev}' from revset items: + + $ hg log -R ../a -T '{join(revset("parents(%d)", rev), ", ")}\n' -r6 + 4, 5 + Test active bookmark templating $ hg book foo