Mercurial > public > mercurial-scm > hg
diff tests/test-commit.t @ 21924:5375ba75df40
cmdutil: make commit message shown in text editor customizable by template
This patch makes commit message shown in text editor customizable by
template. For example, this can advertise:
- sample commit messages for routine works,
- points to call attention before commit,
- message of the day, and so on
To show commit message correctly even in problematic encoding, this
patch chooses the latter below:
- replace "buildcommittext" with "buildcommittemplate" completely
- invoke "buildcommittemplate" only if '[committemplate] changeset'
is configured explicitly
For example, if multibyte character ending with backslash (0x5c) is
followed by ASCII character 'n' in the customized template, sequence
of backslash and 'n' is treated as line-feed unexpectedly (and
multibyte character is broken, too).
This corruption occurs in 'decode("string-escape")' while parsing
template string.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 15 Jul 2014 23:34:13 +0900 |
parents | 422981492ace |
children | 9d92b9d1e282 |
line wrap: on
line diff
--- a/tests/test-commit.t Fri Jul 18 23:15:28 2014 -0500 +++ b/tests/test-commit.t Tue Jul 15 23:34:13 2014 +0900 @@ -354,6 +354,48 @@ test saving last-message.txt +test that '[committemplate] changeset' definition and commit log +specific template keywords work well + + $ cat >> .hg/hgrc <<EOF + > [committemplate] + > changeset = HG: this is customized commit template + > HG: {extramsg} + > {if(currentbookmark, + > "HG: bookmark '{currentbookmark}' is activated\n", + > "HG: no bookmark is activated\n")}{subrepos % + > "HG: subrepo '{subrepo}' is changed\n"} + > EOF + + $ hg init sub2 + $ echo a > sub2/a + $ hg -R sub2 add sub2/a + $ echo 'sub2 = sub2' >> .hgsub + + $ HGEDITOR=cat hg commit -S -q + HG: this is customized commit template + HG: Leave message empty to abort commit. + HG: bookmark 'currentbookmark' is activated + HG: subrepo 'sub' is changed + HG: subrepo 'sub2' is changed + abort: empty commit message + [255] + + $ hg bookmark --inactive currentbookmark + $ hg forget .hgsub + $ HGEDITOR=cat hg commit -q + HG: this is customized commit template + HG: Leave message empty to abort commit. + HG: no bookmark is activated + abort: empty commit message + [255] + + $ cat >> .hg/hgrc <<EOF + > # disable customizing for subsequent tests + > [committemplate] + > changeset = + > EOF + $ cd ..