X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FConfig.pm;h=c48ab2bd5c43c0c85d7c87fabf71782a2fe5c478;hb=f0d445048bc5d3de05a963d9a024279a93152c1f;hp=c27928deddb7f1a5df17f2efe358719a64e47aba;hpb=5290ed2889d7a62ce3e41e4ff08efaefd2727eda;p=public-inbox.git diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index c27928de..c48ab2bd 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -226,7 +226,6 @@ sub cgit_repo_merge ($$$) { $rel =~ s!/?\.git\z!!; } $self->{"coderepo.$rel.dir"} //= $path; - $self->{"coderepo.$rel.cgiturl"} //= _array($rel); } sub is_git_dir ($) { @@ -276,7 +275,7 @@ sub scan_projects_coderepo ($$$) { sub parse_cgitrc { my ($self, $cgitrc, $nesting) = @_; - $cgitrc //= $self->{'publicinbox.cgitrc'}; + $cgitrc //= $self->{'publicinbox.cgitrc'} // return; if ($nesting == 0) { # defaults: my %s = map { $_ => 1 } qw(/cgit.css /cgit.png @@ -388,6 +387,7 @@ sub repo_objs { my ($self, $ibxish) = @_; my $ibx_code_repos = $ibxish->{coderepo} // return; $ibxish->{-repo_objs} // do { + parse_cgitrc($self, undef, 0); my $code_repos = $self->{-code_repos}; my @repo_objs; for my $nick (@$ibx_code_repos) { @@ -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,20 @@ sub urlmatch { my $fh = popen_rd($cmd); local $/ = "\0"; my $val = <$fh>; - if (close($fh)) { - chomp($val); - $val; - } else { - $urlmatch_broken = 1 if (($? >> 8) != 1); - undef; + 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; } sub json {