From: Eric Wong <e@80x24.org>
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 [thread overview]
Message-ID: <20230110114921.2668377-5-e@80x24.org> (raw)
In-Reply-To: <20230110114921.2668377-1-e@80x24.org>
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
}
}
prev parent reply other threads:[~2023-01-10 11:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-10 11:49 [PATCH 0/4] www: more coderepo tweaks Eric Wong
2023-01-10 11:49 ` [PATCH 1/4] www_coderepo: handle "?h=$tip" in summary view Eric Wong
2023-01-10 11:49 ` [PATCH 2/4] www_coderepo: show tree root as "(root)" Eric Wong
2023-01-10 11:49 ` [PATCH 3/4] viewvcs: update comment about show_other_result Eric Wong
2023-01-10 11:49 ` Eric Wong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230110114921.2668377-5-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).