inbox => $ibx,
path_type => '2/38', # or 'v2'
ssoma_lock => 1, # disable for v2
+ bytes_added => 0,
}, $class
}
warn "bogus TZ offset: $zone, ignoring and assuming +0000\n";
$zone = '+0000';
}
- $ts ||= time;
+ $ts = time unless defined $ts;
$ts = 0 if $ts < 0; # git uses unsigned times
"$ts $zone";
}
my $from = $mime->header('From');
my ($email) = PublicInbox::Address::emails($from);
my ($name) = PublicInbox::Address::names($from);
- # git gets confused with:
- # "'A U Thor <u@example.com>' via foo" <foo@example.com>
- # ref:
- # <CAD0k6qSUYANxbjjbE4jTW4EeVwOYgBD=bXkSu=akiYC_CB7Ffw@mail.gmail.com>
- $name =~ tr/<>//d;
my $date_raw = parse_date($mime);
my $subject = $mime->header('Subject');
my $blob = $self->{mark}++;
my $str = $mime->as_string;
- print $w "blob\nmark :$blob\ndata ", length($str), "\n" or wfail;
+ my $n = length($str);
+ $self->{bytes_added} += $n;
+ print $w "blob\nmark :$blob\ndata ", $n, "\n" or wfail;
print $w $str, "\n" or wfail;
$str = undef;
# v2: we need this for Xapian
if ($self->{want_object_id}) {
chomp($self->{last_object_id} = $self->get_mark(":$blob"));
+ $self->{last_object_size} = $n;
}
my $ref = $self->{ref};
print $w "reset $ref\n" or wfail;
}
- utf8::encode($email);
- utf8::encode($name);
+ # quiet down wide character warnings with utf8::encode
+ if (defined $email) {
+ utf8::encode($email);
+ } else {
+ $email = '';
+ warn "no email in From: $from\n";
+ }
+
+ # git gets confused with:
+ # "'A U Thor <u@example.com>' via foo" <foo@example.com>
+ # ref:
+ # <CAD0k6qSUYANxbjjbE4jTW4EeVwOYgBD=bXkSu=akiYC_CB7Ffw@mail.gmail.com>
+ if (defined $name) {
+ $name =~ tr/<>//d;
+ utf8::encode($name);
+ } else {
+ $name = '';
+ warn "no name in From: $from\n";
+ }
utf8::encode($subject);
- # quiet down wide character warnings:
print $w "commit $ref\nmark :$commit\n",
"author $name <$email> $date_raw\n",
"committer $self->{ident} ", now_raw(), "\n" or wfail;
$self->{tip} = ":$commit";
}
-sub run_die ($$) {
+sub run_die ($;$) {
my ($cmd, $env) = @_;
my $pid = spawn($cmd, $env, undef);
defined $pid or die "spawning ".join(' ', @$cmd)." failed: $!";
}
if ($nchg) {
run_die([@cmd, 'update-server-info'], undef);
- eval {
+ ($self->{path_type} eq '2/38') and eval {
require PublicInbox::SearchIdx;
my $inbox = $self->{inbox} || $git_dir;
my $s = PublicInbox::SearchIdx->new($inbox);