[PATCH 2 of 8] commit: change "editform" to distinguish merge commits from other

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Fri Aug 15 09:09:20 CDT 2014


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1408111553 -32400
#      Fri Aug 15 23:05:53 2014 +0900
# Node ID aee1879e03e5ef361a648cd98804cc635f21e274
# Parent  27fa707554466289f41d2c3a08544bbce55e2720
commit: change "editform" to distinguish merge commits from other

"editform" argument for "getcommiteditor" is decided according to the
format below:

  COMMAND[.ROUTE]

  - COMMAND: name of command
  - ROUTE: name of route, if there are two or more routes in COMMAND

This patch uses "normal.normal" and "normal.merge" as ROUTE of
"editform" instead of "normal", to distinguish merge commits from
other in "hg commit" without "--amend" case.

This patch assumes "editform" variations for "hg commit" below:

    commit.normal.normal
    commit.normal.merge
    commit.amend.normal
    commit.amend.merge

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1448,7 +1448,10 @@
                     # Propagate to subrepos
                     baseui.setconfig('phases', 'new-commit', 'secret', 'commit')
 
-                editform = 'commit.normal'
+                if 1 < len(repo[None].parents()):
+                    editform = 'commit.normal.merge'
+                else:
+                    editform = 'commit.normal.normal'
                 editor = cmdutil.getcommiteditor(editform=editform, **opts)
                 return repo.commit(message, opts.get('user'), opts.get('date'),
                                    match,
diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
--- a/mercurial/help/config.txt
+++ b/mercurial/help/config.txt
@@ -395,7 +395,8 @@
 
 - ``changeset.backout`` for :hg:`backout`
 - ``changeset.commit.amend`` for :hg:`commit --amend`
-- ``changeset.commit.normal`` for :hg:`commit` without ``--amend``
+- ``changeset.commit.normal.merge`` for :hg:`commit` on merges
+- ``changeset.commit.normal.normal`` for :hg:`commit` on other
 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
 - ``changeset.gpg.sign`` for :hg:`sign`
 - ``changeset.graft`` for :hg:`graft`
@@ -422,7 +423,7 @@
 
 At the external editor invocation for committing, corresponding
 dot-separated list of names without ``changeset.`` prefix
-(e.g. ``commit.normal``) is in ``HGEDITFORM`` environment variable.
+(e.g. ``commit.normal.normal``) is in ``HGEDITFORM`` environment variable.
 
 In this section, items other than ``changeset`` can be referred from
 others. For example, the configuration to list committed files up
diff --git a/tests/test-commit.t b/tests/test-commit.t
--- a/tests/test-commit.t
+++ b/tests/test-commit.t
@@ -9,7 +9,7 @@
   > true
   > EOF
   $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg commit -m ""
-  HGEDITFORM=commit.normal
+  HGEDITFORM=commit.normal.normal
   abort: empty commit message
   [255]
   $ hg commit -d '0 0' -m commit-1
@@ -282,7 +282,8 @@
 
 should succeed
 
-  $ hg ci -mmerge
+  $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg ci -mmerge --edit
+  HGEDITFORM=commit.normal.merge
   $ cd ..
 
 


More information about the Mercurial-devel mailing list