X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FFetch.pm;h=3b6aa389f383405981a17c047d8a9bcaddddfedf;hb=d922fc44d1afb5e4400f2606c475e42aee087c24;hp=364271e8ccd918537db42ae01e3d0d6734ed84fa;hpb=d9b0f6432682e4ad0a49f7befccde208e4565f1d;p=public-inbox.git diff --git a/lib/PublicInbox/Fetch.pm b/lib/PublicInbox/Fetch.pm index 364271e8..3b6aa389 100644 --- a/lib/PublicInbox/Fetch.pm +++ b/lib/PublicInbox/Fetch.pm @@ -44,6 +44,21 @@ sub remote_url ($$) { undef } +# PSGI mount prefixes and manifest.js.gz prefixes don't always align... +# TODO: remove, handle multi-inbox fetch +sub deduce_epochs ($$) { + my ($m, $path) = @_; + my ($v1_ent, @v2_epochs); + my $path_pfx = ''; + $path =~ s!/+\z!!; + do { + $v1_ent = $m->{$path}; + @v2_epochs = grep(m!\A\Q$path\E/git/[0-9]+\.git\z!, keys %$m); + } while (!defined($v1_ent) && !@v2_epochs && + $path =~ s!\A(/[^/]+)/!/! and $path_pfx .= $1); + ($path_pfx, $v1_ent ? $path : undef, @v2_epochs); +} + sub do_manifest ($$$) { my ($lei, $dir, $ibx_uri) = @_; my $muri = URI->new("$ibx_uri/manifest.js.gz"); @@ -88,7 +103,7 @@ sub do_manifest ($$$) { return; } my (undef, $v1_path, @v2_epochs) = - PublicInbox::LeiMirror::deduce_epochs($mdiff, $ibx_uri->path); + deduce_epochs($mdiff, $ibx_uri->path); [ 200, $muri, $v1_path, \@v2_epochs, $ft, $mf, $m1 ]; }