All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
	"Gregory Anders" <greg@gpanders.com>,
	"Đoàn Trần Công Danh" <congdanhqx@gmail.com>,
	"Jeff King" <peff@peff.net>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Eric Wong" <e@80x24.org>,
	"Felipe Contreras" <felipe.contreras@gmail.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v3 00/13] send-email: various optimizations to speed up by >2x
Date: Sun, 23 May 2021 10:56:05 +0200	[thread overview]
Message-ID: <cover-00.13-0000000000-20210523T085231Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-00.10-00000000000-20210520T081826Z-avarab@gmail.com>

A re-roll of v2[1] which fixes issues pointed out with v2, plus some
others I noticed along the way.

There are now no longer any changes to the "public"
Git::config_regxp() API. Instead it's left bitrotting in our tree at
the end of this, having 0 in-tree users (instead of the 1 currently).

We also handle the -c foo.bar (NULL value) case correctly, per what
Jeff King pointed out. I also found a related issue with
GIT_TEST_PERL_FATAL_WARNINGS=true, which we can now turn on for
git-send-email.perl.

1. https://lore.kernel.org/git/cover-00.10-00000000000-20210520T081826Z-avarab@gmail.com/

Ævar Arnfjörð Bjarmason (13):
  send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
  send-email tests: test for boolean variables without a value
  send-email: remove non-working support for "sendemail.smtpssl"
  send-email: refactor sendemail.smtpencryption config parsing
  send-email: copy "config_regxp" into git-send-email.perl
  send-email: lazily load config for a big speedup
  send-email: lazily shell out to "git var"
  send-email: use function syntax instead of barewords
  send-email: get rid of indirect object syntax
  send-email: lazily load modules for a big speedup
  perl: lazily load some common Git.pm setup code
  send-email: move trivial config handling to Perl
  perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()

 Documentation/config/sendemail.txt |   3 -
 git-send-email.perl                | 174 +++++++++++++++++++----------
 perl/Git.pm                        |  35 +++---
 t/t9001-send-email.sh              |  29 +++++
 4 files changed, 160 insertions(+), 81 deletions(-)

Range-diff against v2:
 -:  ---------- >  1:  71f890dc60 send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true
 -:  ---------- >  2:  707c2ca556 send-email tests: test for boolean variables without a value
 1:  8474acae68 =  3:  3bbd48dab2 send-email: remove non-working support for "sendemail.smtpssl"
 2:  b87f53adbe =  4:  bed0f98d68 send-email: refactor sendemail.smtpencryption config parsing
 -:  ---------- >  5:  c12f69a411 send-email: copy "config_regxp" into git-send-email.perl
 3:  1b27a393ae !  6:  d1c233d251 send-email: lazily load config for a big speedup
    @@ git-send-email.perl: sub read_config {
      			next unless defined $v;
      			next if $configured->{$setting}++;
      			$$target = $v;
    -@@ git-send-email.perl: sub read_config {
    - 	}
    +@@ git-send-email.perl: sub config_regexp {
    + 	return @ret;
      }
      
     +# Save ourselves a lot of work of shelling out to 'git config' (it
     +# parses 'bool' etc.) by only doing so for config keys that exist.
     +my %known_config_keys;
     +{
    -+	my @known_config_keys = Git::config_regexp("^sende?mail[.]");
    ++	my @known_config_keys = config_regexp("^sende?mail[.]");
     +	@known_config_keys{@known_config_keys} = ();
     +}
     +
    @@ git-send-email.perl: sub read_config {
      my $rc = GetOptions(
      	"identity=s" => \$identity,
      	"no-identity" => \$no_identity,
    -@@ git-send-email.perl: sub read_config {
    +@@ git-send-email.perl: sub config_regexp {
      # Now we know enough to read the config
      {
          my %configured;
    @@ git-send-email.perl: sub read_config {
      }
      
      # Begin by accumulating all the variables (defined above), that we will end up
    -@@ git-send-email.perl: sub read_config {
    +@@ git-send-email.perl: sub config_regexp {
          usage();
      }
      
    --if ($forbid_sendmail_variables && (scalar Git::config_regexp("^sendmail[.]")) != 0) {
    +-if ($forbid_sendmail_variables && (scalar config_regexp("^sendmail[.]")) != 0) {
     +if ($forbid_sendmail_variables && grep { /^sendmail/s } keys %known_config_keys) {
      	die __("fatal: found configuration options for 'sendmail'\n" .
      		"git-send-email is configured with the sendemail.* options - note the 'e'.\n" .
      		"Set sendemail.forbidSendmailVariables to false to disable this check.\n");
    -
    - ## perl/Git.pm ##
    -@@ perl/Git.pm: sub config_regexp {
    - 	} catch Git::Error::Command with {
    - 		my $E = shift;
    - 		if ($E->value() == 1) {
    --			my @matches = ();
    --			return @matches;
    -+			# Key(s) not found.
    -+			return;
    - 		} else {
    - 			throw $E;
    - 		}
 4:  acee22b77d !  7:  4326c2f99c send-email: lazily shell out to "git var"
    @@ Commit message
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## git-send-email.perl ##
    -@@ git-send-email.perl: sub read_config {
    +@@ git-send-email.perl: sub config_regexp {
      }
      
      my ($repoauthor, $repocommitter);
 5:  f317cd1c01 =  8:  e1fc71e3f9 send-email: use function syntax instead of barewords
 6:  fc27024f83 =  9:  a806ce06f1 send-email: get rid of indirect object syntax
 7:  f86f5453d7 ! 10:  aa11439789 send-email: lazily load modules for a big speedup
    @@ git-send-email.perl
     @@
      use 5.008;
      use strict;
    - use warnings;
    + use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
     -use POSIX qw/strftime/;
     -use Term::ReadLine;
      use Getopt::Long;
    @@ git-send-email.perl: sub do_edit {
      
      	# SMTP password masked
      	system "stty echo";
    -@@ git-send-email.perl: sub read_config {
    +@@ git-send-email.perl: sub config_regexp {
      }
      
      sub parse_address_line {
 8:  86641377c0 = 11:  b3b342b173 perl: lazily load some common Git.pm setup code
 9:  895c9e29a9 ! 12:  950dc0f53d send-email: move trivial config handling to Perl
    @@ Commit message
     
         Optimize the startup time of git-send-email by using an amended
         config_regexp() function to retrieve the list of config keys and
    -    values we're interested in. See the earlier "send-email: lazily load
    -    config for a big speedup" commit for why changing its interface is OK.
    +    values we're interested in.
     
         For boolean keys we can handle the [true|false] case ourselves, and
         the "--get" case didn't need any parsing. Let's leave "--path" and
    -    other "--bool" cases to "git config". As noted in a preceding commit
    -    we're free to change the config_regexp() function, it's only used by
    -    "git send-email".
    +    other "--bool" cases to "git config". I'm not bothering with the
    +    "undef" or "" case (true and false, respectively), let's just punt on
    +    those and others and have "git config --type=bool" handle it.
     
         This brings the runtime of "git send-email" from ~60-~70ms to a very
         steady ~40ms on my test box. We now run just one "git config"
    @@ Commit message
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    +    diff --git a/git-send-email.perl b/git-send-email.perl
    +    index 1e9273fd4f..1ea4d9589d 100755
    +    --- a/git-send-email.perl
    +    +++ b/git-send-email.perl
    +    @@ -324,7 +324,11 @@ sub read_config {
    +                    my $target = $config_bool_settings{$setting};
    +                    my $key = "$prefix.$setting";
    +                    next unless exists $known_keys->{$key};
    +    -               my $v = Git::config_bool(@repo, $key);
    +    +               my $v = (@{$known_keys->{$key}} == 1 &&
    +    +                        (defined $known_keys->{$key}->[0] &&
    +    +                         $known_keys->{$key}->[0] =~ /^(?:true|false)$/s))
    +    +                       ? $known_keys->{$key}->[0] eq 'true'
    +    +                       : Git::config_bool(@repo, $key);
    +                    next unless defined $v;
    +                    next if $configured->{$setting}++;
    +                    $$target = $v;
    +    @@ -353,14 +357,12 @@ sub read_config {
    +                    my $key = "$prefix.$setting";
    +                    next unless exists $known_keys->{$key};
    +                    if (ref($target) eq "ARRAY") {
    +    -                       my @values = Git::config(@repo, $key);
    +    -                       next unless @values;
    +    +                       my @values = @{$known_keys->{$key}};
    +                            next if $configured->{$setting}++;
    +                            @$target = @values;
    +                    }
    +                    else {
    +    -                       my $v = Git::config(@repo, $key);
    +    -                       next unless defined $v;
    +    +                       my $v = $known_keys->{$key}->[0];
    +                            next if $configured->{$setting}++;
    +                            $$target = $v;
    +                    }
    +    @@ -371,12 +373,19 @@ sub config_regexp {
    +            my ($regex) = @_;
    +            my @ret;
    +            eval {
    +    -               @ret = Git::command(
    +    +               my $ret = Git::command(
    +                            'config',
    +    -                       '--name-only',
    +    +                       '--null',
    +                            '--get-regexp',
    +                            $regex,
    +                    );
    +    +               @ret = map {
    +    +                       # We must always return ($k, $v) here, since
    +    +                       # empty config values will be just "key\0",
    +    +                       # not "key\nvalue\0".
    +    +                       my ($k, $v) = split /\n/, $_, 2;
    +    +                       ($k, $v);
    +    +               } split /\0/, $ret;
    +                    1;
    +            } or do {
    +                    # If we have no keys we're OK, otherwise re-throw
    +    @@ -389,8 +398,10 @@ sub config_regexp {
    +     # parses 'bool' etc.) by only doing so for config keys that exist.
    +     my %known_config_keys;
    +     {
    +    -       my @known_config_keys = config_regexp("^sende?mail[.]");
    +    -       @known_config_keys{@known_config_keys} = ();
    +    +       my @kv = config_regexp("^sende?mail[.]");
    +    +       while (my ($k, $v) = splice @kv, 0, 2) {
    +    +               push @{$known_config_keys{$k}} => $v;
    +    +       }
    +     }
    +
    +     # sendemail.identity yields to --identity. We must parse this
    +
      ## git-send-email.perl ##
     @@ git-send-email.perl: sub read_config {
      		my $target = $config_bool_settings{$setting};
    @@ git-send-email.perl: sub read_config {
      		next unless exists $known_keys->{$key};
     -		my $v = Git::config_bool(@repo, $key);
     +		my $v = (@{$known_keys->{$key}} == 1 &&
    -+			 $known_keys->{$key}->[0] =~ /^(?:true|false)$/s)
    ++			 (defined $known_keys->{$key}->[0] &&
    ++			  $known_keys->{$key}->[0] =~ /^(?:true|false)$/s))
     +			? $known_keys->{$key}->[0] eq 'true'
     +			: Git::config_bool(@repo, $key);
      		next unless defined $v;
    @@ git-send-email.perl: sub read_config {
      			next if $configured->{$setting}++;
      			$$target = $v;
      		}
    -@@ git-send-email.perl: sub read_config {
    +@@ git-send-email.perl: sub config_regexp {
    + 	my ($regex) = @_;
    + 	my @ret;
    + 	eval {
    +-		@ret = Git::command(
    ++		my $ret = Git::command(
    + 			'config',
    +-			'--name-only',
    ++			'--null',
    + 			'--get-regexp',
    + 			$regex,
    + 		);
    ++		@ret = map {
    ++			# We must always return ($k, $v) here, since
    ++			# empty config values will be just "key\0",
    ++			# not "key\nvalue\0".
    ++			my ($k, $v) = split /\n/, $_, 2;
    ++			($k, $v);
    ++		} split /\0/, $ret;
    + 		1;
    + 	} or do {
    + 		# If we have no keys we're OK, otherwise re-throw
    +@@ git-send-email.perl: sub config_regexp {
      # parses 'bool' etc.) by only doing so for config keys that exist.
      my %known_config_keys;
      {
    --	my @known_config_keys = Git::config_regexp("^sende?mail[.]");
    +-	my @known_config_keys = config_regexp("^sende?mail[.]");
     -	@known_config_keys{@known_config_keys} = ();
    -+	my @kv = Git::config_regexp("^sende?mail[.]");
    ++	my @kv = config_regexp("^sende?mail[.]");
     +	while (my ($k, $v) = splice @kv, 0, 2) {
     +		push @{$known_config_keys{$k}} => $v;
     +	}
      }
      
      # sendemail.identity yields to --identity. We must parse this
    -
    - ## perl/Git.pm ##
    -@@ perl/Git.pm: sub config_int {
    - =item config_regexp ( RE )
    - 
    - Retrieve the list of configuration key names matching the regular
    --expression C<RE>. The return value is a list of strings matching
    --this regex.
    -+expression C<RE>. The return value is an ARRAY of key-value pairs.
    - 
    - =cut
    - 
    - sub config_regexp {
    - 	my ($self, $regex) = _maybe_self(@_);
    - 	try {
    --		my @cmd = ('config', '--name-only', '--get-regexp', $regex);
    -+		my @cmd = ('config', '--null', '--get-regexp', $regex);
    - 		unshift @cmd, $self if $self;
    --		my @matches = command(@cmd);
    --		return @matches;
    -+		my $data = command(@cmd);
    -+		my (@kv) = map { split /\n/, $_, 2 } split /\0/, $data;
    -+		return @kv;
    - 	} catch Git::Error::Command with {
    - 		my $E = shift;
    - 		if ($E->value() == 1) {
10:  97455f993d = 13:  c1d7ea664a perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd()
-- 
2.32.0.rc0.406.g05cb3eebfc


  parent reply	other threads:[~2021-05-23  8:56 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-12 13:48 [PATCH 0/9] send-email: various optimizations to speed up by >2x Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 1/9] send-email: remove non-working support for "sendemail.smtpssl" Ævar Arnfjörð Bjarmason
2021-05-12 15:46   ` Đoàn Trần Công Danh
2021-05-12 13:48 ` [PATCH 2/9] send-email: refactor sendemail.smtpencryption config parsing Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 3/9] send-email: lazily load config for a big speedup Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 4/9] send-email: lazily shell out to "git var" Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 5/9] send-email: use function syntax instead of barewords Ævar Arnfjörð Bjarmason
2021-05-12 23:11   ` Jeff King
2021-05-12 13:48 ` [PATCH 6/9] send-email: get rid of indirect object syntax Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 7/9] send-email: lazily load modules for a big speedup Ævar Arnfjörð Bjarmason
2021-05-12 13:48 ` [PATCH 8/9] perl: lazily load some common Git.pm setup code Ævar Arnfjörð Bjarmason
2021-05-12 18:05   ` Eric Wong
2021-05-12 13:48 ` [PATCH 9/9] send-email: move trivial config handling to Perl Ævar Arnfjörð Bjarmason
2021-05-12 19:52   ` Eric Sunshine
2021-05-12 23:08   ` Jeff King
2021-05-13  7:04     ` Felipe Contreras
2021-05-13  7:07       ` Ævar Arnfjörð Bjarmason
2021-05-13  7:26       ` Jeff King
2021-05-13  8:15         ` Felipe Contreras
2021-05-13 11:45           ` Ævar Arnfjörð Bjarmason
2021-05-12 18:04 ` [PATCH 0/9] send-email: various optimizations to speed up by >2x Eric Wong
2021-05-12 23:34 ` Jeff King
2021-05-12 23:36 ` Jeff King
2021-05-13  7:37   ` Ævar Arnfjörð Bjarmason
2021-05-13  7:49     ` Jeff King
2021-05-20  8:18 ` [PATCH v2 00/10] " Ævar Arnfjörð Bjarmason
2021-05-20  8:18   ` [PATCH v2 01/10] send-email: remove non-working support for "sendemail.smtpssl" Ævar Arnfjörð Bjarmason
2021-05-20  8:18   ` [PATCH v2 02/10] send-email: refactor sendemail.smtpencryption config parsing Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 03/10] send-email: lazily load config for a big speedup Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 04/10] send-email: lazily shell out to "git var" Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 05/10] send-email: use function syntax instead of barewords Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 06/10] send-email: get rid of indirect object syntax Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 07/10] send-email: lazily load modules for a big speedup Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 08/10] perl: lazily load some common Git.pm setup code Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 09/10] send-email: move trivial config handling to Perl Ævar Arnfjörð Bjarmason
2021-05-20  8:19   ` [PATCH v2 10/10] perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd() Ævar Arnfjörð Bjarmason
2021-05-20  8:27   ` [PATCH v2 00/10] send-email: various optimizations to speed up by >2x Jeff King
2021-05-20 23:53     ` Junio C Hamano
2021-05-21  6:23       ` Ævar Arnfjörð Bjarmason
2021-05-21  7:07         ` Junio C Hamano
2021-05-21  9:13         ` Jeff King
2021-05-21  9:24           ` Ævar Arnfjörð Bjarmason
2021-05-21  9:37             ` Jeff King
2021-05-28 15:49         ` Felipe Contreras
2021-05-29  8:19           ` Ævar Arnfjörð Bjarmason
2021-05-29 14:53             ` Felipe Contreras
2021-05-30 11:33               ` Ævar Arnfjörð Bjarmason
2021-05-30 16:07                 ` Felipe Contreras
2021-05-28 15:12     ` Felipe Contreras
2021-05-23  8:56   ` Ævar Arnfjörð Bjarmason [this message]
2021-05-23  8:56     ` [PATCH v3 01/13] send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 02/13] send-email tests: test for boolean variables without a value Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 03/13] send-email: remove non-working support for "sendemail.smtpssl" Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 04/13] send-email: refactor sendemail.smtpencryption config parsing Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 05/13] send-email: copy "config_regxp" into git-send-email.perl Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 06/13] send-email: lazily load config for a big speedup Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 07/13] send-email: lazily shell out to "git var" Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 08/13] send-email: use function syntax instead of barewords Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 09/13] send-email: get rid of indirect object syntax Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 10/13] send-email: lazily load modules for a big speedup Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 11/13] perl: lazily load some common Git.pm setup code Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 12/13] send-email: move trivial config handling to Perl Ævar Arnfjörð Bjarmason
2021-05-23  8:56     ` [PATCH v3 13/13] perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd() Ævar Arnfjörð Bjarmason
2021-05-24  1:15     ` [PATCH v3 00/13] send-email: various optimizations to speed up by >2x Junio C Hamano
2021-05-24  7:52     ` [PATCH v4 " Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 01/13] send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 02/13] send-email tests: test for boolean variables without a value Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 03/13] send-email: remove non-working support for "sendemail.smtpssl" Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 04/13] send-email: refactor sendemail.smtpencryption config parsing Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 05/13] send-email: copy "config_regxp" into git-send-email.perl Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 06/13] send-email: lazily load config for a big speedup Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 07/13] send-email: lazily shell out to "git var" Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 08/13] send-email: use function syntax instead of barewords Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 09/13] send-email: get rid of indirect object syntax Ævar Arnfjörð Bjarmason
2021-05-24  7:52       ` [PATCH v4 10/13] send-email: lazily load modules for a big speedup Ævar Arnfjörð Bjarmason
2021-05-27  1:11         ` Junio C Hamano
2021-05-27 11:36           ` Ævar Arnfjörð Bjarmason
2021-05-24  7:53       ` [PATCH v4 11/13] perl: lazily load some common Git.pm setup code Ævar Arnfjörð Bjarmason
2021-05-24  7:53       ` [PATCH v4 12/13] send-email: move trivial config handling to Perl Ævar Arnfjörð Bjarmason
2021-05-27 15:57         ` Jeff King
2021-05-24  7:53       ` [PATCH v4 13/13] perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd() Ævar Arnfjörð Bjarmason
2021-05-27 16:00       ` [PATCH v4 00/13] send-email: various optimizations to speed up by >2x Jeff King
2021-05-28  9:23       ` [PATCH v5 " Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 01/13] send-email tests: support GIT_TEST_PERL_FATAL_WARNINGS=true Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 02/13] send-email tests: test for boolean variables without a value Ævar Arnfjörð Bjarmason
2021-07-10 23:23           ` Jeff King
2021-05-28  9:23         ` [PATCH v5 03/13] send-email: remove non-working support for "sendemail.smtpssl" Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 04/13] send-email: refactor sendemail.smtpencryption config parsing Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 05/13] send-email: copy "config_regxp" into git-send-email.perl Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 06/13] send-email: lazily load config for a big speedup Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 07/13] send-email: lazily shell out to "git var" Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 08/13] send-email: use function syntax instead of barewords Ævar Arnfjörð Bjarmason
2021-05-28 16:10           ` Felipe Contreras
2021-05-29  8:17             ` Ævar Arnfjörð Bjarmason
2021-05-29 14:25               ` Felipe Contreras
2021-05-28  9:23         ` [PATCH v5 09/13] send-email: get rid of indirect object syntax Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 10/13] send-email: lazily load modules for a big speedup Ævar Arnfjörð Bjarmason
2021-05-28 15:55           ` Felipe Contreras
2021-05-29  8:12             ` Ævar Arnfjörð Bjarmason
2021-05-29 14:24               ` Felipe Contreras
2021-05-28  9:23         ` [PATCH v5 11/13] perl: lazily load some common Git.pm setup code Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 12/13] send-email: move trivial config handling to Perl Ævar Arnfjörð Bjarmason
2021-05-28  9:23         ` [PATCH v5 13/13] perl: nano-optimize by replacing Cwd::cwd() with Cwd::getcwd() Ævar Arnfjörð Bjarmason
2021-05-28 16:13         ` [PATCH v5 00/13] send-email: various optimizations to speed up by >2x Felipe Contreras
2021-05-31  5:48         ` Jeff King
2021-05-31  9:53           ` Ævar Arnfjörð Bjarmason
2021-05-31 14:38             ` Jeff King
2021-05-27  7:21 ` [PATCH 0/9] " Elijah Newren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover-00.13-0000000000-20210523T085231Z-avarab@gmail.com \
    --to=avarab@gmail.com \
    --cc=congdanhqx@gmail.com \
    --cc=e@80x24.org \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=greg@gpanders.com \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.