# HG changeset patch # User FUJIWARA Katsunori # Date 1408153439 -32400 # Node ID d0d3e5c6eb3c4b36fae4aff069faedc210a14c20 # Parent f3200bf460a8ec2b47351ddbd5995e6f0f6bff07 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. diff -r f3200bf460a8 -r d0d3e5c6eb3c hgext/rebase.py --- 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: diff -r f3200bf460a8 -r d0d3e5c6eb3c mercurial/help/config.txt --- 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` diff -r f3200bf460a8 -r d0d3e5c6eb3c tests/test-rebase-cache.t --- 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 < 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)