diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-10-12 12:34:05 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-12 12:34:05 -0700 |
commit | 1ff5a41b6bfb250d2d055159caa9e00e008bc9d5 (patch) | |
tree | 1672e87d5472e340d94d4a5a4f5890ff4bc8c49d | |
parent | afc71aa9e62b4bce35472143f063022b13aba3b1 (diff) | |
parent | cec5dae827f2255578807be6214ece1e0619b8e1 (diff) | |
download | git-1ff5a41b6bfb250d2d055159caa9e00e008bc9d5.tar.gz |
Merge branch 'cs/perl-config-path-send-email'
* cs/perl-config-path-send-email:
use new Git::config_path() for aliasesfile
Add Git::config_path()
-rwxr-xr-x | git-send-email.perl | 10 | ||||
-rw-r--r-- | perl/Git.pm | 32 |
2 files changed, 41 insertions, 1 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 8ded7f5ce3..91607c5878 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -225,7 +225,6 @@ my %config_settings = ( "cccmd" => \$cc_cmd, "aliasfiletype" => \$aliasfiletype, "bcc" => \@bcclist, - "aliasesfile" => \@alias_files, "suppresscc" => \@suppress_cc, "envelopesender" => \$envelope_sender, "multiedit" => \$multiedit, @@ -234,6 +233,10 @@ my %config_settings = ( "assume8bitencoding" => \$auto_8bit_encoding, ); +my %config_path_settings = ( + "aliasesfile" => \@alias_files, +); + # Help users prepare for 1.7.0 sub chain_reply_to { if (defined $chain_reply_to && @@ -333,6 +336,11 @@ sub read_config { $$target = Git::config_bool(@repo, "$prefix.$setting") unless (defined $$target); } + foreach my $setting (keys %config_path_settings) { + my $target = $config_path_settings{$setting}->[0]; + $$target = Git::config_path(@repo, "$prefix.$setting") unless (defined $$target); + } + foreach my $setting (keys %config_settings) { my $target = $config_settings{$setting}; next if $setting eq "to" and defined $no_to; diff --git a/perl/Git.pm b/perl/Git.pm index a86ab709c2..c279bfb244 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -627,6 +627,38 @@ sub config_bool { }; } + +=item config_path ( VARIABLE ) + +Retrieve the path configuration C<VARIABLE>. The return value +is an expanded path or C<undef> if it's not defined. + +This currently wraps command('config') so it is not so fast. + +=cut + +sub config_path { + my ($self, $var) = _maybe_self(@_); + + try { + my @cmd = ('config', '--path'); + unshift @cmd, $self if $self; + if (wantarray) { + return command(@cmd, '--get-all', $var); + } else { + return command_oneline(@cmd, '--get', $var); + } + } catch Git::Error::Command with { + my $E = shift; + if ($E->value() == 1) { + # Key not found. + return undef; + } else { + throw $E; + } + }; +} + =item config_int ( VARIABLE ) Retrieve the integer configuration C<VARIABLE>. The return value |