-# Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
#
# git fast-import-based ssoma-mda MDA replacement
return if $tip eq '';
print $w "ls $tip $path\n" or wfail;
local $/ = "\n";
- defined(my $info = <$r>) or die "EOF from fast-import: $!";
+ my $info = <$r> // die "EOF from fast-import: $!";
$info =~ /\Amissing / ? undef : $info;
}
my ($r, $w, $oid) = @_;
print $w "cat-blob $oid\n" or wfail;
local $/ = "\n";
- my $info = <$r>;
- defined $info or die "EOF from fast-import / cat-blob: $!";
+ my $info = <$r> // die "EOF from fast-import / cat-blob: $!";
$info =~ /\A[a-f0-9]{40,} blob ([0-9]+)\n\z/ or return;
my $left = $1;
my $offset = 0;
my $buf = '';
my $n;
while ($left > 0) {
- $n = read($r, $buf, $left, $offset);
- defined($n) or die "read cat-blob failed: $!";
+ $n = read($r, $buf, $left, $offset) //
+ die "read cat-blob failed: $!";
$n == 0 and die 'fast-export (cat-blob) died';
$left -= $n;
$offset += $n;
}
- $n = read($r, my $lf, 1);
- defined($n) or die "read final byte of cat-blob failed: $!";
+ $n = read($r, my $lf, 1) //
+ die "read final byte of cat-blob failed: $!";
die "bad read on final byte: <$lf>" if $lf ne "\n";
# fixup some bugginess in old versions:
my $oid = $1;
my $msg = _cat_blob($r, $w, $oid) or die "BUG: cat-blob $1 failed";
my $cur = PublicInbox::Eml->new($msg);
- my $cur_s = $cur->header('Subject');
- $cur_s = '' unless defined $cur_s;
- my $cur_m = $mime->header('Subject');
- $cur_m = '' unless defined $cur_m;
+ my $cur_s = $cur->header('Subject') // '';
+ my $cur_m = $mime->header('Subject') // '';
if ($cur_s ne $cur_m || norm_body($cur) ne norm_body($mime)) {
return ('MISMATCH', $cur);
}
my $env = { GIT_INDEX_FILE => $index };
run_die([@cmd, qw(read-tree -m -v -i), $self->{ref}], $env);
}
- eval { run_die([@cmd, 'update-server-info']) };
my $ibx = $self->{ibx};
+ eval { run_die([@cmd, 'update-server-info']) } if $ibx;
if ($ibx && $ibx->version == 1 && -d "$ibx->{inboxdir}/public-inbox" &&
eval { require PublicInbox::SearchIdx }) {
eval {
};
warn "$ibx->{inboxdir} index failed: $@\n" if $@;
}
- eval { run_die([@cmd, qw(gc --auto)]) } if $do_gc;
+ if ($do_gc) {
+ my @quiet = (-t STDERR ? () : '-q');
+ eval { run_die([@cmd, qw(gc --auto), @quiet]) }
+ }
}
sub barrier {
die "not active\n" unless $self->{in};
my ($r, $w) = $self->gfi_start;
print $w "get-mark $mark\n" or wfail;
- defined(my $oid = <$r>) or die "get-mark failed, need git 2.6.0+\n";
+ my $oid = <$r> // die "get-mark failed, need git 2.6.0+\n";
chomp($oid);
$oid;
}
$x->dbh;
$x;
};
- return if !$u->set_maybe(pack('H*', $smsg->{blob}), 1);
+ return if !$u->set_maybe($smsg->oidbin, 1);
return if (!$oidx->vivify_xvmd($smsg) &&
$eidx_git->check($smsg->{blob}));
}