diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -1083,6 +1083,7 @@ class queue(object): p.write("# Date %s %s\n\n" % date) if util.safehasattr(msg, '__call__'): msg = msg() + repo.savecommitmessage(msg) commitmsg = msg and msg or ("[mq]: %s" % patchfn) n = newcommit(repo, None, commitmsg, user, date, match=match, force=True) diff --git a/tests/test-mq-qnew.t b/tests/test-mq-qnew.t --- a/tests/test-mq-qnew.t +++ b/tests/test-mq-qnew.t @@ -233,3 +233,39 @@ hg headers use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon abort: cannot manage merge changesets $ rm -r sandbox + +Test saving last-message.txt + + $ hg init repo + $ cd repo + + $ cat > $TESTDIR/commitfailure.py < from mercurial import util + > def reposetup(ui, repo): + > class commitfailure(repo.__class__): + > def commit(self, *args, **kwargs): + > raise util.Abort('emulating unexpected abort') + > repo.__class__ = commitfailure + > EOF + $ cat > .hg/hgrc < [extensions] + > commitfailure = $TESTDIR/commitfailure.py + > EOF + + $ cat > $TESTDIR/editor.sh << EOF + > echo "==== before editing" + > cat \$1 + > echo "====" + > echo "test saving last-message.txt" >> \$1 + > EOF + + $ rm -f .hg/last-message.txt + $ HGEDITOR="sh $TESTDIR/editor.sh" hg qnew -e patch + ==== before editing + ==== + abort: emulating unexpected abort + [255] + $ cat .hg/last-message.txt + test saving last-message.txt + + $ cd ..