diff options
author | Junio C Hamano <gitster@pobox.com> | 2024-05-24 12:29:35 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-05-24 12:29:36 -0700 |
commit | 48440f60a730b93b2a39449a69cb56db5e7114c7 (patch) | |
tree | 6547cae6f0c29cd3a8be08c3abb2e004b8fae3de /git-send-email.perl | |
parent | b9b439e0e3a543ddb920e4cf8d3c9d53f730111f (diff) | |
parent | 1991703bdbb7839e3b43e0e0238f8efd76c8fe8d (diff) |
Merge branch 'jc/fix-2.45.1-and-friends-for-2.39' into fixes/2.45.1/2.40
Revert overly aggressive "layered defence" that went into 2.45.1
and friends, which broke "git-lfs", "git-annex", and other use
cases, so that we can rebuild necessary counterparts in the open.
* jc/fix-2.45.1-and-friends-for-2.39:
Revert "fsck: warn about symlink pointing inside a gitdir"
Revert "Add a helper function to compare file contents"
clone: drop the protections where hooks aren't run
tests: verify that `clone -c core.hooksPath=/dev/null` works again
Revert "core.hooksPath: add some protection while cloning"
init: use the correct path of the templates directory again
hook: plug a new memory leak
ci: stop installing "gcc-13" for osx-gcc
ci: avoid bare "gcc" for osx-gcc job
ci: drop mention of BREW_INSTALL_PACKAGES variable
send-email: avoid creating more than one Term::ReadLine object
send-email: drop FakeTerm hack
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 07f2a0cbea..c761801ac1 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -26,18 +26,6 @@ use Git::I18N; Getopt::Long::Configure qw/ pass_through /; -package FakeTerm; -sub new { - my ($class, $reason) = @_; - return bless \$reason, shift; -} -sub readline { - my $self = shift; - die "Cannot use readline on FakeTerm: $$self"; -} -package main; - - sub usage { print <<EOT; git send-email' [<options>] <file|directory> @@ -936,17 +924,19 @@ EOT3 do_edit(@files); } -sub term { - my $term = eval { +{ + # Only instantiate one $term per program run, since some + # Term::ReadLine providers refuse to create a second instance. + my $term; + sub term { require Term::ReadLine; - $ENV{"GIT_SEND_EMAIL_NOTTY"} - ? Term::ReadLine->new('git-send-email', \*STDIN, \*STDOUT) - : Term::ReadLine->new('git-send-email'); - }; - if ($@) { - $term = FakeTerm->new("$@: going non-interactive"); + if (!defined $term) { + $term = $ENV{"GIT_SEND_EMAIL_NOTTY"} + ? Term::ReadLine->new('git-send-email', \*STDIN, \*STDOUT) + : Term::ReadLine->new('git-send-email'); + } + return $term; } - return $term; } sub ask { |