mbox series

[0/2] protect git from a rogue editor

Message ID 20211004072600.74241-1-carenas@gmail.com (mailing list archive)
Headers show
Series protect git from a rogue editor | expand

Message

Carlo Marcelo Arenas Belón Oct. 4, 2021, 7:25 a.m. UTC
The following series, expands git's terminal support to allow for
saving/restoring its settings around an EDITOR call.

The reason why that might be useful has been documented[1] by Windows
users that had found themselves not able to read clearly the messages
printed by git after a commit (or a rebase) when the default EDITOR
failed to reset the terminal settings completely.

It can be useful also in POSIX systems and indeed could be tested there
by forcefully killing vi while doing a commit, and that before this series
will require the user to reset their terminal.

The code has been improved since the RFC and simplified, and has been
tested in Windows 7 x86, and Windows 10 and 11 (x86_64).

[1] https://github.com/microsoft/terminal/issues/10152#issuecomment-932808573

Carlo Marcelo Arenas Belón (2):
  terminal: teach git how to save/restore its terminal settings
  editor: save and reset terminal after calling EDITOR

 compat/terminal.c | 75 ++++++++++++++++++++++++++++++++++++++---------
 compat/terminal.h |  3 ++
 editor.c          |  8 +++++
 3 files changed, 72 insertions(+), 14 deletions(-)

Comments

Junio C Hamano Oct. 4, 2021, 4:38 p.m. UTC | #1
Carlo Marcelo Arenas Belón  <carenas@gmail.com> writes:

> The following series, expands git's terminal support to allow for
> saving/restoring its settings around an EDITOR call.
>
> The reason why that might be useful has been documented[1] by Windows
> users that had found themselves not able to read clearly the messages
> printed by git after a commit (or a rebase) when the default EDITOR
> failed to reset the terminal settings completely.

Sounds sensible.  I do not think it is limited to Windows---I think
I've caused vi crash to get me into an non-echoing terminal myself
non some variant of UNIX before Linux era ;-)