# HG changeset patch # User Laurent Charignon # Date 1433536278 25200 # Node ID fb04372d7b38c0b371a650ef10f9d02d868c1367 # Parent 95f490136e75a18cf9d4cdde5f71ec0261a0979a 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. diff -r 95f490136e75 -r fb04372d7b38 mercurial/patch.py --- 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() diff -r 95f490136e75 -r fb04372d7b38 tests/test-commit-interactive.t --- 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 < 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__'