From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.1 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id D2B801FA2D for ; Tue, 10 Jan 2023 11:49:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1673351361; bh=i2fAvEHCafm8aw89hZt8WtCwRtaQQVJdbbQAym6R1NQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=SiHihWQPVW2YzYJ6TM5M21Aq4VBXx+y+UOPubh8KmERESuJYnmrKizmG+2VmcQlKk 9lHeklry/aOg1ylIl+cq+dKCtwwrL0NVGuk7jsZu8YFY/bCV5/Lc6K2VO+WYyt5qwN pGLHLTFl+8V1V6m3Viu43rLhNj/dUbPZ4WbDiXnM= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 4/4] config: use inbox names to map inboxes <-> coderepos Date: Tue, 10 Jan 2023 11:49:21 +0000 Message-Id: <20230110114921.2668377-5-e@80x24.org> In-Reply-To: <20230110114921.2668377-1-e@80x24.org> References: <20230110114921.2668377-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: We can avoid having to deal with weakening references and then later creating strong references in WwwCoderepo. --- lib/PublicInbox/Config.pm | 4 +--- lib/PublicInbox/ViewVCS.pm | 27 +++++++++++++++------------ lib/PublicInbox/WwwCoderepo.pm | 2 -- 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 } }