rebase: change "editform" to distinguish merge commits from others
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 16 Aug 2014 10:43:59 +0900
changeset 22251 d0d3e5c6eb3c
parent 22250 f3200bf460a8
child 22252 de783f2403c4
rebase: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes in COMMAND This patch newly adds "merge" as ROUTE, to distinguish merge commits from other. This patch passes bool as "ctxorbool" to "mergeeditform", because working context has always 2 parents at this point. Dropping the second parent of non-merging commits is executed in "concludenode". Unlike other patches in this series (e.g. for "hg commit"), this patch doesn't add "normal.normal"/"normal.merge" style ROUTEs, because there is no "merge" case in "collapse" ROUTE.
hgext/rebase.py
mercurial/help/config.txt
tests/test-rebase-cache.t
--- a/hgext/rebase.py	Sat Aug 16 10:43:59 2014 +0900
+++ b/hgext/rebase.py	Sat Aug 16 10:43:59 2014 +0900
@@ -138,7 +138,6 @@
     skipped = set()
     targetancestors = set()
 
-    editor = cmdutil.getcommiteditor(editform='rebase.normal', **opts)
 
     lock = wlock = None
     try:
@@ -354,6 +353,9 @@
                     p1rev = repo[rev].p1().rev()
                     cmdutil.duplicatecopies(repo, rev, p1rev, skiprev=target)
                 if not collapsef:
+                    merging = repo[p2].rev() != nullrev
+                    editform = cmdutil.mergeeditform(merging, 'rebase')
+                    editor = cmdutil.getcommiteditor(editform=editform, **opts)
                     newrev = concludenode(repo, rev, p1, p2, extrafn=extrafn,
                                           editor=editor)
                 else:
--- a/mercurial/help/config.txt	Sat Aug 16 10:43:59 2014 +0900
+++ b/mercurial/help/config.txt	Sat Aug 16 10:43:59 2014 +0900
@@ -412,7 +412,8 @@
 - ``changeset.mq.qfold`` for :hg:`qfold`
 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
-- ``changeset.rebase.normal`` for :hg:`rebase` without ``--collapse``
+- ``changeset.rebase.merge`` for :hg:`rebase` on merges
+- ``changeset.rebase.normal`` for :hg:`rebase` on other
 - ``changeset.shelve.shelve`` for :hg:`shelve`
 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
 - ``changeset.tag.remove`` for :hg:`tag --remove`
--- a/tests/test-rebase-cache.t	Sat Aug 16 10:43:59 2014 +0900
+++ b/tests/test-rebase-cache.t	Sat Aug 16 10:43:59 2014 +0900
@@ -470,5 +470,11 @@
   o  0 A public
   
 
-  $ hg rebase --dest 7 --source 5
+  $ cat > $TESTTMP/checkeditform.sh <<EOF
+  > env | grep HGEDITFORM
+  > true
+  > EOF
+  $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg rebase --dest 7 --source 5 -e
+  HGEDITFORM=rebase.merge
+  HGEDITFORM=rebase.normal
   saved backup bundle to $TESTTMP/a3/c4/.hg/strip-backup/*-backup.hg (glob)