annotate mercurial/templates/map-cmdline.changelog @ 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 f91e5630ce7e
children f4aeb952ab77
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2032
diff changeset
1 header = '{date|shortdate} {author|person} <{author|email}>\n\n'
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2032
diff changeset
2 header_verbose = ''
9936
3aa420c56ac4 list branches in changelog template
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 2033
diff changeset
3 changeset = '\t* {files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\t[{node|short}]{tags}{branches}\n\n'
2033
e3280d350792 Group changes done by the same developer on the same with --style=changelog
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2032
diff changeset
4 changeset_quiet = '\t* {desc|firstline|fill68|tabindent|strip}\n\n'
9936
3aa420c56ac4 list branches in changelog template
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 2033
diff changeset
5 changeset_verbose = '{date|isodate} {author|person} <{author|email}> ({node|short}{tags}{branches})\n\n\t* {file_adds|stringify|fill68|tabindent}{file_dels|stringify|fill68|tabindent}{files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\n'
1987
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
6 start_tags = ' ['
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
7 tag = '{tag}, '
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
8 last_tag = '{tag}]'
9936
3aa420c56ac4 list branches in changelog template
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 2033
diff changeset
9 start_branches = ' <'
3aa420c56ac4 list branches in changelog template
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 2033
diff changeset
10 branch = '{branch}, '
3aa420c56ac4 list branches in changelog template
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 2033
diff changeset
11 last_branch = '{branch}>'
1987
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
12 file = '{file}, '
2032
cd6bdbc508dd Don't print filenames in braces for changelog style.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1987
diff changeset
13 last_file = '{file}:\n\t'
1987
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
14 file_add = '{file_add}, '
2032
cd6bdbc508dd Don't print filenames in braces for changelog style.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1987
diff changeset
15 last_file_add = '{file_add}: new file.\n* '
1987
04c17fc39c84 add changelog style to command line template.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
16 file_del = '{file_del}, '
2032
cd6bdbc508dd Don't print filenames in braces for changelog style.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1987
diff changeset
17 last_file_del = '{file_del}: deleted file.\n* '