about summary refs log tree commit homepage
path: root/lib/PublicInbox/MiscIdx.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/MiscIdx.pm')
-rw-r--r--lib/PublicInbox/MiscIdx.pm15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/PublicInbox/MiscIdx.pm b/lib/PublicInbox/MiscIdx.pm
index edc70f9b..9dcc96b7 100644
--- a/lib/PublicInbox/MiscIdx.pm
+++ b/lib/PublicInbox/MiscIdx.pm
@@ -20,6 +20,7 @@ use PublicInbox::Spawn qw(nodatacow_dir);
 use Carp qw(croak);
 use File::Path ();
 use PublicInbox::MiscSearch;
+use PublicInbox::Config;
 
 sub new {
         my ($class, $eidx) = @_;
@@ -97,6 +98,20 @@ EOF
                 }
         }
         index_text($self, $ibx->{name}, 1, 'XNAME');
+        my $data = {};
+        if (defined(my $max = $ibx->max_git_epoch)) { # v2
+                my $desc = $ibx->description;
+                my $pfx = "/$ibx->{name}/git/";
+                for my $epoch (0..$max) {
+                        my $git = $ibx->git_epoch($epoch) or return;
+                        if (my $ent = $git->manifest_entry($epoch, $desc)) {
+                                $data->{"$pfx$epoch.git"} = $ent;
+                        }
+                }
+        } elsif (my $ent = $ibx->git->manifest_entry) { # v1
+                $data->{"/$ibx->{name}"} = $ent;
+        }
+        $doc->set_data(PublicInbox::Config::json()->encode($data));
         if (defined $docid) {
                 $xdb->replace_document($docid, $doc);
         } else {