]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/V2Writable.pm
*idx: pass $smsg in more places instead of many args
[public-inbox.git] / lib / PublicInbox / V2Writable.pm
index b42e6a13f1eafab89724ad81aa6f65bd78be0fd9..34dd139b8ab82495296ddb9abd76847dee54b5fc 100644 (file)
@@ -150,9 +150,15 @@ sub add {
 # indexes a message, returns true if checkpointing is needed
 sub do_idx ($$$$$$$) {
        my ($self, $msgref, $mime, $len, $num, $oid, $mid0) = @_;
-       $self->{over}->add_overview($mime, $len, $num, $oid, $mid0);
+       my $smsg = bless {
+               bytes => $len,
+               num => $num,
+               blob => $oid,
+               mid => $mid0,
+       }, 'PublicInbox::Smsg';
+       $self->{over}->add_overview($mime, $smsg, $self);
        my $idx = idx_shard($self, $num % $self->{shards});
-       $idx->index_raw($len, $msgref, $num, $oid, $mid0, $mime);
+       $idx->index_raw($len, $msgref, $num, $oid, $mid0, $mime, $self);
        my $n = $self->{transact_bytes} += $len;
        $n >= (PublicInbox::SearchIdx::BATCH_BYTES * $self->{shards});
 }
@@ -176,7 +182,7 @@ sub _add {
        defined $num or return; # duplicate
        defined $mid0 or die "BUG: $mid0 undefined\n";
        my $im = $self->importer;
-       my $cmt = $im->add($mime);
+       my $cmt = $im->add($mime, undef, $self); # sets $self->{(au|co)time}
        $cmt = $im->get_mark($cmt);
        $self->{last_commit}->[$self->{epoch_max}] = $cmt;
 
@@ -1266,15 +1272,17 @@ sub index_epoch ($$$) {
                $pr->("$i.git indexing $range\n");
        }
 
-       my @cmd = qw(log --raw -r --pretty=tformat:%H
+       my @cmd = qw(log --raw -r --pretty=tformat:%H.%at.%ct
                        --no-notes --no-color --no-abbrev --no-renames);
        my $fh = $self->{reindex_pipe} = $git->popen(@cmd, $range);
        my $cmt;
        while (<$fh>) {
                chomp;
                $self->{current_info} = "$i.git $_";
-               if (/\A$x40$/o && !defined($cmt)) {
-                       $cmt = $_;
+               if (/\A($x40)\.([0-9]+)\.([0-9]+)$/o) {
+                       $cmt //= $1;
+                       $self->{autime} = $2;
+                       $self->{cotime} = $3;
                } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\tm$/o) {
                        reindex_oid($self, $sync, $git, $1);
                } elsif (/\A:\d{6} 100644 $x40 ($x40) [AM]\td$/o) {