From: Michael J Gruber Date: Fri, 14 Oct 2011 14:30:25 GMT Subject: Re: [PATCH] fix alias expansion with new Git::config_path() Message-ID: <4E984781.6050601@drmicha.warpmail.net> In-Reply-To: <20111014142557.GB13680@laptop> Cord Seele venit, vidit, dixit 14.10.2011 16:25: > On Fri 14 Oct 2011 14:29:27 +0200, Michael J Gruber wrote: > >> cec5dae (use new Git::config_path() for aliasesfile, 2011-09-30) >> >> broke the expansion of aliases for me: >> >> ./git-send-email --cc=junio --dry-run >> 0001-t7800-avoid-arithmetic-expansion-notation.patch >> 0001-t7800-avoid-arithmetic-expansion-notation.patch >> Who should the emails appear to be from? [Michael J Gruber >> ] >> Emails will be sent from: Michael J Gruber >> Dry-OK. Log says: >> Sendmail: /home/mjg/bin/msmtp-fastmail-git -i git@vger.kernel.org junio >> git@drmicha.warpmail.net >> From: Michael J Gruber >> To: git@vger.kernel.org >> Cc: junio >> ... >> >> Happens with both "--cc junio" and "--cc=junio". >> >> Reverting cec5dae brings my aliases back. Relevant config: >> >> git config --get-regexp sendemail.alias\* >> sendemail.aliasesfile /home/mjg/git/gitauthors >> sendemail.aliasfiletype mutt >> >> Can I please have alias expansion back? > > The following patch fixes it for me, please give it a try. > > Since this fix is simply copy&pasting some code from the config_settings path > someone with better perl understanding might wnat to refactor it > (Junio/Jacob)? > > -- Cord > > > Signed-off-by: Cord Seele Tested-by: Michael J Gruber Thanks. (Though I'm still wondering what this is about overall.) > --- > git-send-email.perl | 12 ++++++++++-- > 1 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/git-send-email.perl b/git-send-email.perl > index 91607c5..6885dfa 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -337,8 +337,16 @@ sub read_config { > } > > foreach my $setting (keys %config_path_settings) { > - my $target = $config_path_settings{$setting}->[0]; > - $$target = Git::config_path(@repo, "$prefix.$setting") unless (defined $$target); > + my $target = $config_path_settings{$setting}; > + if (ref($target) eq "ARRAY") { > + unless (@$target) { > + my @values = Git::config_path(@repo, "$prefix.$setting"); > + @$target = @values if (@values && defined $values[0]); > + } > + } > + else { > + $$target = Git::config_path(@repo, "$prefix.$setting") unless (defined $$target); > + } > } > > foreach my $setting (keys %config_settings) {