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.
This commit is contained in:
FUJIWARA Katsunori 2014-05-11 00:49:36 +09:00
parent 86d8361294
commit 9af54bf260
3 changed files with 52 additions and 7 deletions

View File

@ -1656,17 +1656,18 @@ class queue(object):
# 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

View File

@ -20,6 +20,8 @@ init:
$ 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 @@ Fold in the middle of the queue:
a
+a
$ hg qfold p2
$ HGEDITOR=cat hg qfold p2
$ grep git .hg/patches/p1 && echo 'git patch found!'
[1]
@ -215,6 +217,15 @@ Test saving last-message.txt:
$ 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 @@ Test saving last-message.txt:
$ 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 ..

View File

@ -6,6 +6,8 @@ Environment setup for MQ
$ 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 @@ Should fail if no patches applied
$ 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 @@ Test saving last-message.txt:
> 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 @@ Test saving last-message.txt:
Fifth commit message
This is the 5th log message
test saving last-message.txt