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()
This commit is contained in:
Junio C Hamano 2011-10-12 12:34:05 -07:00
commit 1ff5a41b6b
2 changed files with 41 additions and 1 deletions

View File

@ -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;

View File

@ -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