[PATCH 15 of 15] cmdutil: use '[committemplate]' section like as map file for style definition
FUJIWARA Katsunori
foozy at lares.dti.ne.jp
Sat Aug 2 08:02:24 CDT 2014
# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1406983587 -32400
# Sat Aug 02 21:46:27 2014 +0900
# Node ID ee832d729d973bd5e60f2bafcd3df559293602ab
# Parent db6e59e045dec018344a2eff0c854d446a2bcffa
cmdutil: use '[committemplate]' section like as map file for style definition
Before this patch, each template definitions for 'changeset*' in
'[committemplate]' section have to be written fully from scratch,
even though many parts of them may be common.
This patch uses '[committemplate]' section like as the map file for
the style definition. All items other than 'changeset' can be referred
from others.
This can reduce total cost of template customization in
'[committemplate]' section.
When the commit template other than '[committemplate] changeset'
is chosen by 'editform', putting '[committemplate] changeset'
value into the cache of the templater causes unexpected result,
because the templater stores the specified (= chosen) template
definition into own cache as 'changeset' at construction time.
This is the reason why '[committemplate] changeset' can't be referred
from others.
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -2222,6 +2222,10 @@
except SyntaxError, inst:
raise util.Abort(inst.args[0])
+ for k, v in repo.ui.configitems('committemplate'):
+ if k != 'changeset':
+ t.t.cache[k] = v
+
if not extramsg:
extramsg = '' # ensure that extramsg is string
diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
--- a/mercurial/help/config.txt
+++ b/mercurial/help/config.txt
@@ -419,6 +419,17 @@
only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
commit message for :hg:`tag` regardless of ``--remove`` option.
+In this section, items other than ``changeset`` can be referred from
+others. For example, the configuration to list committed files up
+below can be referred as ``{listupfiles}``::
+
+ [committemplate]
+ listupfiles = {file_adds %
+ "HG: added {file}\n" }{file_mods %
+ "HG: changed {file}\n" }{file_dels %
+ "HG: removed {file}\n" }{if(files, "",
+ "HG: no files changed\n")}
+
``decode/encode``
-----------------
diff --git a/tests/test-mq-qrefresh-replace-log-message.t b/tests/test-mq-qrefresh-replace-log-message.t
--- a/tests/test-mq-qrefresh-replace-log-message.t
+++ b/tests/test-mq-qrefresh-replace-log-message.t
@@ -32,17 +32,19 @@
$ cat >> .hg/hgrc <<EOF
> [committemplate]
+ > listupfiles = {file_adds %
+ > "HG: added {file}\n" }{file_mods %
+ > "HG: changed {file}\n" }{file_dels %
+ > "HG: removed {file}\n" }{if(files, "",
+ > "HG: no files changed\n")}
+ >
> changeset = HG: this is customized commit template
> {desc}\n\n
> HG: Enter commit message. Lines beginning with 'HG:' are removed.
> HG: {extramsg}
> HG: --
> HG: user: {author}
- > HG: branch '{branch}'\n{file_adds %
- > "HG: added {file}\n" }{file_mods %
- > "HG: changed {file}\n" }{file_dels %
- > "HG: removed {file}\n" }{if(files, "",
- > "HG: no files changed\n")}
+ > HG: branch '{branch}'\n{listupfiles}
> EOF
$ echo bbbb > file
More information about the Mercurial-devel
mailing list