about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Config.pm4
-rw-r--r--lib/PublicInbox/ViewVCS.pm27
-rw-r--r--lib/PublicInbox/WwwCoderepo.pm2
3 files changed, 16 insertions, 17 deletions
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index c48ab2bd..cdf06d85 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -404,10 +404,8 @@ sub repo_objs {
                         push @repo_objs, $repo if $repo;
                 }
                 if (scalar @repo_objs) {
-                        require Scalar::Util;
                         for (@repo_objs) {
-                                push @{$_->{-ibxs}}, $ibxish;
-                                Scalar::Util::weaken($_->{-ibxs}->[-1]);
+                                push @{$_->{ibx_names}}, $ibxish->{name};
                         }
                         $ibxish->{-repo_objs} = \@repo_objs;
                 } else {
diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm
index 9a559687..6b641b32 100644
--- a/lib/PublicInbox/ViewVCS.pm
+++ b/lib/PublicInbox/ViewVCS.pm
@@ -155,21 +155,24 @@ sub show_commit_start { # ->psgi_qx callback
 
 sub ibx_url_for {
         my ($ctx) = @_;
-        $ctx->{ibx} and return; # just fall back to $upfx
-        $ctx->{git} or return; # /$CODEREPO/$OID/s/ to (eidx|ibx)
+        $ctx->{ibx} and return; # fall back to $upfx
+        $ctx->{git} or return;
         if (my $ALL = $ctx->{www}->{pi_cfg}->ALL) {
-                $ALL->base_url // $ALL->base_url($ctx->{env});
-        } elsif (my $ibxs = $ctx->{git}->{-ibxs}) {
-                for my $ibx (@$ibxs) {
-                        if ($ibx->isrch) {
-                                return defined($ibx->{url}) ?
-                                        prurl($ctx->{env}, $ibx->{url}) :
-                                        "../../../$ibx->{name}/";
-                        }
+                return $ALL->base_url // $ALL->base_url($ctx->{env});
+        } elsif (my $ibx_names = $ctx->{git}->{ibx_names}) {
+                my $by_name = $ctx->{www}->{pi_cfg}->{-by_name};
+                for my $name (@$ibx_names) {
+                        my $ibx = $by_name->{$name} // do {
+                                warn "inbox `$name' no longer exists\n";
+                                next;
+                        };
+                        $ibx->isrch // next;
+                        return defined($ibx->{url}) ?
+                                prurl($ctx->{env}, $ibx->{url}) :
+                                "../../../$name/";
                 }
-        } else {
-                undef;
         }
+        undef;
 }
 
 sub cmt_finalize {
diff --git a/lib/PublicInbox/WwwCoderepo.pm b/lib/PublicInbox/WwwCoderepo.pm
index 53126e19..e89a6456 100644
--- a/lib/PublicInbox/WwwCoderepo.pm
+++ b/lib/PublicInbox/WwwCoderepo.pm
@@ -42,13 +42,11 @@ sub prepare_coderepos {
                 $k = substr($k, length('publicinbox.'), -length('.coderepo'));
                 my $ibx = $pi_cfg->lookup_name($k) // next;
                 $pi_cfg->repo_objs($ibx);
-                push @{$self->{-strong}}, $ibx; # strengthen {-ibxs} weakref
         }
         for my $k (grep(/\Aextindex\.(?:.+)\.coderepo\z/, keys %$pi_cfg)) {
                 $k = substr($k, length('extindex.'), -length('.coderepo'));
                 my $eidx = $pi_cfg->lookup_ei($k) // next;
                 $pi_cfg->repo_objs($eidx);
-                push @{$self->{-strong}}, $eidx; # strengthen {-ibxs} weakref
         }
 }