Re: [PATCH] rebase -i: abort cleanly if the editor fails to launch
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 19, 2009, 20:44 UTC
- Message-ID
- <7v8wcy7kyc.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <4B2CC133.9010704@gmail.com>
Björn Gustavsson <bgustavsson@gmail.com> writes:
Show 15 quoted lines
> If the user's configured editor is emacsclient, the editor > will fail to launch if emacs is not running and the git > command that tried to lanuch the editor will abort. For most > commands, all you have to do is to start emacs and repeat > the command. > > The "git rebase -i" command, however, aborts without cleaning > the "$GIT_DIR/rebase-merge" directory if it fails to launch the > editor, so you'll need to do "git rebase --abort" before > repeating the rebase command. > > Change "git rebase -i" to terminate using "die_abort" (instead of > with "die") if the initial launch of the editor fails. > > Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com>
Two questions:
- Is emacsclient the _only_ editor that can exit with non-zero status to signal an error condition "the user invoked me to edit an existing file, but I ended up not letting the user edit it"?
- Are there editors that let you exit with non-zero status on demand?
The above is not a complaint to your log message, but is a genuine request for information.
An editor that can exit with non-zero status on demand could use this codepath to abort the rebase, when a user realizes that the edit s/he has done so far was completely bogus [*1*]. In such a case, the existing error message "Could not execute editor" may sound funny.
Regardless of that small issue, I think the patch to clean-up makes sense.
Thanks.
[Footnote]
*1* We interpret a completely empty $TODO as a signal from the user to abort the sequencer (the literal interpretation of such a $TODO would be to not pick any commits, which could be a source of potential confusion), so it is not an issue in practice if your editor does not allow you to exit with non-zero status to signal an exception. You can remove all lines and exit the editor normally instead.