return unless -e "$path/$se";
}
return if -e "$path/noweb";
+ # this comes from the cgit config, and AFAIK cgit only allows
+ # repos to have one URL, but that's just the PATH_INFO component,
+ # not the Host: portion
# $repo = { url => 'foo.git', dir => '/path/to/foo.git' }
my $rel = $repo->{url};
unless (defined $rel) {
$rel =~ s!/?\.git\z!!;
}
$self->{"coderepo.$rel.dir"} //= $path;
- $self->{"coderepo.$rel.cgiturl"} //= $rel;
+ $self->{"coderepo.$rel.cgiturl"} //= _array($rel);
}
sub is_git_dir ($) {
_array($self->{lc("$pfx.${t}UrlFormat")});
}
- if (my $cgits = $self->{lc("$pfx.cgitUrl")}) {
+ if (defined(my $cgits = $self->{"$pfx.cgiturl"})) {
$git->{cgit_url} = $cgits = _array($cgits);
+ $self->{"$pfx.cgiturl"} = $cgits;
# cgit supports "/blob/?id=%s", but it's only a plain-text
# display and requires an unabbreviated id=
my $pi_config = $ctx->{www}->{pi_config};
for my $cr_name (@$cr) {
- my $url = $pi_config->{"coderepo.$cr_name.cgiturl"};
+ my $urls = $pi_config->{"coderepo.$cr_name.cgiturl"};
my $path = "/path/to/$cr_name";
$cr_name = dq_escape($cr_name);
$$txt .= qq([coderepo "$cr_name"]\n);
- if (defined($url)) {
- my $cpath = $path;
- if ($path !~ m![a-z0-9_/\.\-]!i) {
- $cpath = dq_escape($cpath);
- }
- $$txt .= qq(\t; git clone $url "$cpath"\n);
+ if ($urls && scalar(@$urls)) {
+ $$txt .= "\t; ";
+ $$txt .= join(" ||\n\t;\t", map {;
+ my $cpath = $path;
+ if ($path !~ m![a-z0-9_/\.\-]!i) {
+ $cpath = dq_escape($cpath);
+ }
+ qq(git clone $_ "$cpath");
+ } @$urls);
+ $$txt .= "\n";
}
$$txt .= "\tdir = $path\n";
$$txt .= "\tcgiturl = https://example.com/";