summaryrefslogtreecommitdiff
path: root/perl/Git.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl/Git.pm')
-rw-r--r--perl/Git.pm28
1 files changed, 27 insertions, 1 deletions
diff --git a/perl/Git.pm b/perl/Git.pm
index 54c9ed0dde..02eacef0c2 100644
--- a/perl/Git.pm
+++ b/perl/Git.pm
@@ -9,7 +9,7 @@ package Git;
use 5.008;
use strict;
-use warnings;
+use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : ();
use File::Temp ();
use File::Spec ();
@@ -723,6 +723,32 @@ sub config_int {
return scalar _config_common({'kind' => '--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.
+
+=cut
+
+sub config_regexp {
+ my ($self, $regex) = _maybe_self(@_);
+ try {
+ my @cmd = ('config', '--name-only', '--get-regexp', $regex);
+ unshift @cmd, $self if $self;
+ my @matches = command(@cmd);
+ return @matches;
+ } catch Git::Error::Command with {
+ my $E = shift;
+ if ($E->value() == 1) {
+ my @matches = ();
+ return @matches;
+ } else {
+ throw $E;
+ }
+ };
+}
+
# Common subroutine to implement bulk of what the config* family of methods
# do. This currently wraps command('config') so it is not so fast.
sub _config_common {