Re: [RFC PATCH 0/1] config: surface editor failure in exit code
Junio C Hamano <[email protected]>
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Kenneth Lorber <[email protected]> writes: > When the editor invoked by 'git config -e' fails (crashes or calls exit(3) > with a non-zero value), git notices and give an error: > editor.c:launch_specified_editor() > return error("there was a problem with the editor '%s'", editor); > which is then lost: > builtin/config.c:show_editor() > launch_editor(config_file, NULL, NULL); > which results in git always calling exit(0). Note that the value is > not explicitly thrown away with "(void)", so this may not have been > intentional. I do not intentionally exit my editor with a non-zero status myself, but what I hear from others who do is that they do so to affect the invoking 'git' command, e.g., to stop 'git commit' from creating a commit. They somehow realize they botched the edit, and they want to prevent 'git commit' from committing, signaling that by exiting their editor. A cleaner and more modern way to do so, by the way, is to empty the editor buffer. In either case, 'git commit' itself exits with a non-zero status. It might have been more consistent if 'git config -e' exited with a non-zero status when it noticed that the editor exited with a non-zero status, in that sense. But we have never done so, and that is probably because we did not care ;-) In any case, I am not sure whether there is much value in making 'git config -e' start behaving that way. Even if it can notice a failed editor, the damage to the file is already done, and there is not enough information to undo the damage even if you wanted to when detecting such an error. This is quite different from when an editor edits the 'COMMIT_EDITMSG' file and fails. So, I dunno.