Mercurial > hg
changeset 25483:fb04372d7b38
record: exiting editor with non-zero status should not stop recording session
Before this patch, exiting a hunk edit in record with a non-zero status lead
to the end of the recording session, losing previously-selected hunks to record.
This patch introduces the more desirable behavior of warning the user and
continuing the recording session.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Fri, 05 Jun 2015 13:31:18 -0700 |
parents | 95f490136e75 |
children | a5192774e925 |
files | mercurial/patch.py tests/test-commit-interactive.t |
diffstat | 2 files changed, 32 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/patch.py Sun Jun 07 18:11:23 2015 -0700 +++ b/mercurial/patch.py Fri Jun 05 13:31:18 2015 -0700 @@ -1023,9 +1023,11 @@ f.close() # Start the editor and wait for it to complete editor = ui.geteditor() - ui.system("%s \"%s\"" % (editor, patchfn), - environ={'HGUSER': ui.username()}, - onerr=util.Abort, errprefix=_("edit failed")) + ret = ui.system("%s \"%s\"" % (editor, patchfn), + environ={'HGUSER': ui.username()}) + if ret != 0: + ui.warn(_("editor exited with exit code %d\n") % ret) + continue # Remove comment lines patchfp = open(patchfn) ncpatchfp = cStringIO.StringIO()
--- a/tests/test-commit-interactive.t Sun Jun 07 18:11:23 2015 -0700 +++ b/tests/test-commit-interactive.t Fri Jun 05 13:31:18 2015 -0700 @@ -1291,6 +1291,33 @@ abort: error parsing patch: unhandled transition: range -> range [255] +Exiting editor with status 1, ignores the edit but does not stop the recording +session + + $ HGEDITOR=false hg commit -i <<EOF + > y + > e + > n + > EOF + diff --git a/editedfile b/editedfile + 1 hunks, 3 lines changed + examine changes to 'editedfile'? [Ynesfdaq?] y + + @@ -1,3 +1,3 @@ + -This is the first line + -This change will be committed + -This is the third line + +This change will not be committed + +This is the second line + +This line has been added + record this change to 'editedfile'? [Ynesfdaq?] e + + editor exited with exit code 1 + record this change to 'editedfile'? [Ynesfdaq?] n + + no changes to record + + random text in random positions is still an error $ cat > editor.sh << '__EOF__'