use POSIX qw(strftime);
sub new {
+ # we can't change arg order, this is documented in POD
+ # and external projects may rely on it:
my ($class, $git, $name, $email, $ibx) = @_;
my $ref = 'refs/heads/master';
if ($ibx) {
$ref = $ibx->{ref_head} || 'refs/heads/master';
$name ||= $ibx->{name};
$email ||= $ibx->{-primary_address};
+ $git ||= $ibx->git;
}
bless {
git => $git,
ident => "$name <$email>",
mark => 1,
ref => $ref,
- inbox => $ibx,
+ -inbox => $ibx,
path_type => '2/38', # or 'v2'
lock_path => "$git->{git_dir}/ssoma.lock", # v2 changes this
bytes_added => 0,
run_die([@cmd, 'update-server-info'], undef);
($self->{path_type} eq '2/38') and eval {
require PublicInbox::SearchIdx;
- my $inbox = $self->{inbox} || $git_dir;
- my $s = PublicInbox::SearchIdx->new($inbox);
+ my $ibx = $self->{-inbox} || $git_dir;
+ my $s = PublicInbox::SearchIdx->new($ibx);
$s->index_sync({ ref => $self->{ref} });
};
eval { run_die([@cmd, qw(gc --auto)], undef) } if $do_gc;
my @ct = msg_timestamp($hdr);
my $author_time_raw = git_timestamp(@at);
my $commit_time_raw = git_timestamp(@ct);
+
my $subject = $mime->header('Subject');
$subject = '(no subject)' unless defined $subject;
- my $path_type = $self->{path_type};
+ # Mime decoding can create nulls replace them with spaces to protect git
+ $subject =~ tr/\0/ /;
+ utf8::encode($subject);
+ my $path_type = $self->{path_type};
my $path;
if ($path_type eq '2/38') {
$path = mid2path(v1_mid0($mime));
print $w "reset $ref\n" or wfail;
}
- # Mime decoding can create nulls replace them with spaces to protect git
- $subject =~ tr/\0/ /;
- utf8::encode($subject);
print $w "commit $ref\nmark :$commit\n",
"author $name <$email> $author_time_raw\n",
"committer $self->{ident} $commit_time_raw\n" or wfail;
$? == 0 or die join(' ', @$cmd) . " failed: $?\n";
}
+sub init_bare {
+ my ($dir) = @_;
+ my @cmd = (qw(git init --bare -q), $dir);
+ run_die(\@cmd);
+ # set a reasonable default:
+ @cmd = (qw/git config/, "--file=$dir/config",
+ 'repack.writeBitmaps', 'true');
+ run_die(\@cmd);
+}
+
sub done {
my ($self) = @_;
my $w = delete $self->{out} or return;
=head1 NAME
-PublicInbox::Import - message importer for public-inbox
+PublicInbox::Import - message importer for public-inbox v1 inboxes
=head1 VERSION