mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qrefresh/qfold)
This patch also replaces "editor = False" by "editor =
cmdutil.getcommiteditor()", because:
- it allows to hook commit message determination easily, even in the
case without "--edit"
- it avoids regression (or additional care) around saving
"last-message.txt", even if MQ's "newcommit()" changes its
implementation logic from "localrepository.commit" to
"localrepository.commitctx" with "memctx" in the future
to save commit message into "last-messge.txt" with "memctx",
"editor" should be valid function.
--- a/hgext/mq.py Sun May 11 00:49:36 2014 +0900
+++ b/hgext/mq.py Sun May 11 00:49:36 2014 +0900
@@ -1656,17 +1656,18 @@
# might be nice to attempt to roll back strip after this
defaultmsg = "[mq]: %s" % patchfn
- editor = False
+ editor = cmdutil.getcommiteditor()
if edit:
- def desceditor(repo, ctx, subs):
- desc = self.ui.edit(ctx.description() + "\n",
- ctx.user())
+ def finishdesc(desc):
if desc.rstrip():
ph.setmessage(desc)
return desc
return defaultmsg
+ # i18n: this message is shown in editor with "HG: " prefix
+ extramsg = _('Leave message empty to use default message.')
+ editor = cmdutil.getcommiteditor(finishdesc=finishdesc,
+ extramsg=extramsg)
message = msg or "\n".join(ph.message)
- editor = desceditor
elif not msg:
if not ph.message:
message = defaultmsg
--- a/tests/test-mq-qfold.t Sun May 11 00:49:36 2014 +0900
+++ b/tests/test-mq-qfold.t Sun May 11 00:49:36 2014 +0900
@@ -20,6 +20,8 @@
$ hg qnew -f p3
Fold in the middle of the queue:
+(this tests also that editor is not invoked if '--edit' is not
+specified)
$ hg qpop p1
popping p3
@@ -34,7 +36,7 @@
a
+a
- $ hg qfold p2
+ $ HGEDITOR=cat hg qfold p2
$ grep git .hg/patches/p1 && echo 'git patch found!'
[1]
@@ -215,6 +217,15 @@
$ HGEDITOR="sh $TESTTMP/editor.sh" hg qfold -e p3
==== before editing
original message
+
+
+ HG: Enter commit message. Lines beginning with 'HG:' are removed.
+ HG: Leave message empty to use default message.
+ HG: --
+ HG: user: test
+ HG: branch 'default'
+ HG: added aa
+ HG: changed a
====
transaction abort!
rollback completed
@@ -225,7 +236,26 @@
$ cat .hg/last-message.txt
original message
+
+
test saving last-message.txt
+(confirm whether files listed up in the commit message editing are correct)
+
+ $ cat >> .hg/hgrc <<EOF
+ > [hooks]
+ > pretxncommit.unexpectedabort =
+ > EOF
+ $ hg status -u | while read f; do rm ${f}; done
+ $ hg revert --no-backup -q --all
+ $ hg qpush -q git
+ now at: git
+ $ hg qpush -q --move p3
+ now at: p3
+
+ $ hg status --rev "git^1" --rev . -arm
+ M a
+ A aa
+
$ cd ..
--- a/tests/test-mq-qrefresh-replace-log-message.t Sun May 11 00:49:36 2014 +0900
+++ b/tests/test-mq-qrefresh-replace-log-message.t Sun May 11 00:49:36 2014 +0900
@@ -6,6 +6,8 @@
$ hg qinit
Should fail if no patches applied
+(this tests also that editor is not invoked if '--edit' is not
+specified)
$ hg qrefresh
no patches applied
@@ -16,7 +18,7 @@
$ hg qnew -m "First commit message" first-patch
$ echo aaaa > file
$ hg add file
- $ hg qrefresh
+ $ HGEDITOR=cat hg qrefresh
Should display 'First commit message'
@@ -126,10 +128,20 @@
> EOF
$ rm -f .hg/last-message.txt
+ $ hg status --rev "second-patch^1" -arm
+ A file2
$ HGEDITOR="sh $TESTTMP/editor.sh" hg qrefresh -e
==== before editing
Fifth commit message
This is the 5th log message
+
+
+ HG: Enter commit message. Lines beginning with 'HG:' are removed.
+ HG: Leave message empty to use default message.
+ HG: --
+ HG: user: test
+ HG: branch 'default'
+ HG: added file2
====
transaction abort!
rollback completed
@@ -141,4 +153,6 @@
Fifth commit message
This is the 5th log message
+
+
test saving last-message.txt