diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -2576,6 +2576,7 @@ def fold(ui, repo, *files, **opts): if opts.get('edit'): message = ui.edit(message, user or ui.username()) + repo.savecommitmessage(message) diffopts = q.patchopts(q.diffopts(), *patches) wlock = repo.wlock() diff --git a/tests/test-mq-qfold.t b/tests/test-mq-qfold.t --- a/tests/test-mq-qfold.t +++ b/tests/test-mq-qfold.t @@ -140,5 +140,41 @@ Fold regular patch into a git patch, exp b +b +Test saving last-message.txt: + + $ hg qrefresh -m "original message" + + $ cat > $TESTDIR/commitfailure.py <<EOF + > 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 <<EOF + > [extensions] + > commitfailure = $TESTDIR/commitfailure.py + > EOF + + $ cat > $TESTDIR/editor.sh << EOF + > echo "==== before editing" + > cat \$1 + > echo "====" + > (echo; echo "test saving last-message.txt") >> \$1 + > EOF + + $ rm -f .hg/last-message.txt + $ HGEDITOR="sh $TESTDIR/editor.sh" hg qfold -e p3 + ==== before editing + original message==== + refresh interrupted while patch was popped! (revert --all, qpush to recover) + abort: emulating unexpected abort + [255] + $ cat .hg/last-message.txt + original message + test saving last-message.txt + $ cd ..