# HG changeset patch # User Greg Ward # Date 1259114920 18000 # Node ID 48b81d9bca8d61bf28bc925d685039f3cae64e58 # Parent 720f70b720d36cbe6b7ecb9522b440351be29615 commit: if relevant, tell user their commit message was saved. (issue1635) Specifically, if: 1) the user edited the message (it didn't come straight from -m) and 2) the commit was aborted by an exception then the saved commit message in .hg/last-message.txt could come in handy, so mention it with a ui.write(). This doesn't help users who manually rollback to amend a changeset: the fact that the message was saved to .hg/last-message.txt is invisible in that case. diff -r 720f70b720d3 -r 48b81d9bca8d mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Nov 24 21:08:39 2009 -0500 +++ b/mercurial/localrepo.py Tue Nov 24 21:08:40 2009 -0500 @@ -825,6 +825,7 @@ extra, changes) if editor: cctx._text = editor(self, cctx, subs) + edited = (text != cctx._text) # commit subs if subs: @@ -844,7 +845,14 @@ msgfile.write(cctx._text.rstrip() + '\n') msgfile.close() - ret = self.commitctx(cctx, True) + try: + ret = self.commitctx(cctx, True) + except: + if edited: + msgfn = self.pathto(msgfile.name[len(self.root)+1:]) + self.ui.write( + _('note: commit message saved in %s\n') % msgfn) + raise # update dirstate and mergestate for f in changes[0] + changes[1]: diff -r 720f70b720d3 -r 48b81d9bca8d tests/test-rollback --- a/tests/test-rollback Tue Nov 24 21:08:39 2009 -0500 +++ b/tests/test-rollback Tue Nov 24 21:08:40 2009 -0500 @@ -34,6 +34,15 @@ echo '% rollback by pretxncommit saves commit message (issue 1635)' echo a >> a hg --config hooks.pretxncommit=/bin/false commit -m"precious commit message" - echo '.hg/last-message.txt:' cat .hg/last-message.txt + +echo '% same thing, but run $EDITOR' +cat > $HGTMP/editor <<'__EOF__' +#!/bin/sh +echo "another precious commit message" > "$1" +__EOF__ +chmod +x $HGTMP/editor +HGEDITOR=$HGTMP/editor hg --config hooks.pretxncommit=/bin/false commit +echo '.hg/last-message.txt:' +cat .hg/last-message.txt diff -r 720f70b720d3 -r 48b81d9bca8d tests/test-rollback.out --- a/tests/test-rollback.out Tue Nov 24 21:08:39 2009 -0500 +++ b/tests/test-rollback.out Tue Nov 24 21:08:40 2009 -0500 @@ -34,3 +34,10 @@ abort: pretxncommit hook exited with status 1 .hg/last-message.txt: precious commit message +% same thing, but run $EDITOR +transaction abort! +rollback completed +note: commit message saved in .hg/last-message.txt +abort: pretxncommit hook exited with status 1 +.hg/last-message.txt: +another precious commit message