From 0ce142c944181236f99ea3f7fc72712f3e43d2e2 Mon Sep 17 00:00:00 2001 From: Michael J Gruber Date: Mon, 22 Mar 2010 17:12:53 +0100 Subject: [PATCH] send-email: lazily assign editor variable MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit b4479f0 (add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR", 2009-10-30) introduced the use of "git var GIT_EDITOR" to obtain the preferred editor program, instead of reading environment variables themselves. However, "git var GIT_EDITOR" run without a tty (think "cron job") would give a fatal error "Terminal is dumb, but EDITOR unset". This is not a problem for add-i, svn, p4 and callers of git_editor() defined in git-sh-setup, as all of these call it just before launching the editor. At that point, we know the caller wants to edit. But send-email ran this near the beginning of the program, even if it is not going to use any editor (e.g. run without --compose). Fix this by calling the command only when we edit a file. Reported-by: Uwe Kleine-König Signed-off-by: Michael J Gruber Acked-by: Uwe Kleine-König Acked-by: Jonathan Nieder Signed-off-by: Junio C Hamano --- git-send-email.perl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git-send-email.perl b/git-send-email.perl index 4f5da4ecf..0d53b6530 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -162,9 +162,12 @@ my $compose_filename; # Handle interactive edition of files. my $multiedit; -my $editor = Git::command_oneline('var', 'GIT_EDITOR'); +my $editor; sub do_edit { + if (!defined($editor)) { + $editor = Git::command_oneline('var', 'GIT_EDITOR'); + } if (defined($multiedit) && !$multiedit) { map { system('sh', '-c', $editor.' "$@"', $editor, $_); -- 2.30.2