annotate mercurial/templates/map-cmdline.xml @ 23167:a3c2d9211294 stable

templater: don't overwrite the keyword mapping in runsymbol() (issue4362) This keyword remapping was introduced in e06e9fd2d99f as part of converting generator based iterators into list based iterators, mentioning "undesired behavior in template" when a generator is exhausted, but doesn't say what and introduces no tests. The problem with the remapping was that it corrupted the output for keywords like 'extras', 'file_copies' and 'file_copies_switch' in templates such as: $ hg log -r 142b5d5ec9cc --template "{file_copies % ' File: {file_copy}\n'}" File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) File: mercurial/changelog.py (mercurial/hg.py) What was happening was that in the first call to runtemplate() inside runmap(), 'lm' mapped the keyword (e.g. file_copies) to the appropriate showxxx() method. On each subsequent call to runtemplate() in that loop however, the keyword was mapped to a list of the first item's pieces, e.g.: 'file_copy': ['mercurial/changelog.py', ' (', 'mercurial/hg.py', ')'] Therefore, the dict for the second and any subsequent items were not processed through the corresponding showxxx() method, and the first item's data was reused. The 'extras' keyword regressed in de7e6c489412, and 'file_copies' regressed in 0b241d7a8c62 for other reasons. The common thread of things fixed by this seems to be when a list of dicts are passed to the templatekw._hybrid class.
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 03 Nov 2014 12:08:03 -0500
parents 0be2fe6a0843
children 3095b1027661
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10153
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
1 header = '<?xml version="1.0"?>\n<log>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
2 footer = '</log>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
3
13387
0be2fe6a0843 templates: add bookmarks to command line styles
David Soria Parra <dsp@php.net>
parents: 10159
diff changeset
4 changeset = '<logentry revision="{rev}" node="{node}">\n{branches}{bookmarks}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n</logentry>\n'
0be2fe6a0843 templates: add bookmarks to command line styles
David Soria Parra <dsp@php.net>
parents: 10159
diff changeset
5 changeset_verbose = '<logentry revision="{rev}" node="{node}">\n{branches}{bookmarks}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n<paths>\n{file_adds}{file_dels}{file_mods}</paths>\n{file_copies}</logentry>\n'
0be2fe6a0843 templates: add bookmarks to command line styles
David Soria Parra <dsp@php.net>
parents: 10159
diff changeset
6 changeset_debug = '<logentry revision="{rev}" node="{node}">\n{branches}{bookmarks}{tags}{parents}<author email="{author|email|xmlescape}">{author|person|xmlescape}</author>\n<date>{date|rfc3339date}</date>\n<msg xml:space="preserve">{desc|xmlescape}</msg>\n<paths>\n{file_adds}{file_dels}{file_mods}</paths>\n{file_copies}{extras}</logentry>\n'
10153
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
7
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
8 file_add = '<path action="A">{file_add|xmlescape}</path>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
9 file_mod = '<path action="M">{file_mod|xmlescape}</path>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
10 file_del = '<path action="R">{file_del|xmlescape}</path>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
11
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
12 start_file_copies = '<copies>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
13 file_copy = '<copy source="{source|xmlescape}">{name|xmlescape}</copy>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
14 end_file_copies = '</copies>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
15
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
16 parent = '<parent revision="{rev}" node="{node}" />\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
17 branch = '<branch>{branch|xmlescape}</branch>\n'
000546ec7ced Added XML output for hg log
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
18 tag = '<tag>{tag|xmlescape}</tag>\n'
13387
0be2fe6a0843 templates: add bookmarks to command line styles
David Soria Parra <dsp@php.net>
parents: 10159
diff changeset
19 bookmark = '<bookmark>{bookmark|xmlescape}</bookmark>\n'
10159
182416227722 Added output of "extras" to hg log XML output
Robert Bachmann <rbachm@gmail.com>
parents: 10153
diff changeset
20 extra = '<extra key="{key|xmlescape}">{value|xmlescape}</extra>\n'