summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-10-12 12:34:05 -0700
committerJunio C Hamano <gitster@pobox.com>2011-10-12 12:34:05 -0700
commit1ff5a41b6bfb250d2d055159caa9e00e008bc9d5 (patch)
tree1672e87d5472e340d94d4a5a4f5890ff4bc8c49d
parentafc71aa9e62b4bce35472143f063022b13aba3b1 (diff)
parentcec5dae827f2255578807be6214ece1e0619b8e1 (diff)
downloadgit-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-xgit-send-email.perl10
-rw-r--r--perl/Git.pm32
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