about summary refs log tree commit homepage
path: root/lib/PublicInbox/Config.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-11-23 04:09:58 +0000
committerEric Wong <e@80x24.org>2022-11-23 10:51:26 +0000
commit2bd8f48268ac24a4d3cac326a89099639ae1d170 (patch)
tree7825764eec9ddfb1af3ecb7f2c8af533c8b00083 /lib/PublicInbox/Config.pm
parent99acd1de608f99d90cca15737b71a68f21108d20 (diff)
downloadpublic-inbox-2bd8f48268ac24a4d3cac326a89099639ae1d170.tar.gz
Since HTTP(S) URLs hit by lei or public-inbox-{clone,fetch} are
expected to be git endpoints anyways, fall back to using
http.proxy from git configs to save the user from having to
maintain the same configuration for different things.
Diffstat (limited to 'lib/PublicInbox/Config.pm')
-rw-r--r--lib/PublicInbox/Config.pm16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 6a51226e..5620bd0e 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -533,7 +533,7 @@ sub _fill_ei ($$) {
 }
 
 sub urlmatch {
-        my ($self, $key, $url) = @_;
+        my ($self, $key, $url, $try_git) = @_;
         state $urlmatch_broken; # requires git 1.8.5
         return if $urlmatch_broken;
         my $file = $self->{'-f'} // default_file();
@@ -542,13 +542,19 @@ sub urlmatch {
         my $fh = popen_rd($cmd);
         local $/ = "\0";
         my $val = <$fh>;
-        if (close($fh)) {
-                chomp($val);
-        } else {
-                $urlmatch_broken = 1 if (($? >> 8) != 1);
+        if (!close($fh)) {
                 undef $val;
+                if (($? >> 8) != 1) {
+                        $urlmatch_broken = 1;
+                } elsif ($try_git) { # n.b. this takes cwd into account
+                        $cmd = [qw(git config -z --get-urlmatch), $key, $url];
+                        $fh = popen_rd($cmd);
+                        $val = <$fh>;
+                        close($fh) or undef($val);
+                }
         }
         $? = 0; # don't influence lei exit status
+        chomp $val if defined $val;
         $val;
 }