# Initializes a public-inbox, basically a wrapper for git-init(1)
use strict;
use warnings;
-my $usage = "public-inbox-init NAME GIT_DIR HTTP_URL ADDRESS [ADDRESS..]";
+my $usage = "public-inbox-init NAME REPO_DIR HTTP_URL ADDRESS [ADDRESS..]";
use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/;
use PublicInbox::Config;
use File::Temp qw/tempfile/;
sub x { system(@_) and die join(' ', @_). " failed: $?\n" }
sub usage { print STDERR "Usage: $usage\n"; exit 1 }
-my $version = 1;
-my %opts = ( 'V|version=i' => \$version );
+my $version = undef;
+my $indexlevel = undef;
+my $skip;
+my %opts = ( 'V|version=i' => \$version,
+ 'L|indexlevel=s' => \$indexlevel,
+ 'S|skip=i' => \$skip,
+);
GetOptions(%opts) or usage();
my $name = shift @ARGV or usage();
my $mainrepo = shift @ARGV or usage();
}
exit(1) if $conflict;
+
+ my $ibx = $cfg->lookup_name($name);
+ if ($ibx) {
+ if (!defined($indexlevel) && $ibx->{indexlevel}) {
+ $indexlevel = $ibx->{indexlevel};
+ }
+ }
}
close $fh or die "failed to close $pi_config_tmp: $!\n";
my @x = (qw/git config/, "--file=$pi_config_tmp");
$mainrepo = abs_path($mainrepo);
+if (-f "$mainrepo/inbox.lock") {
+ if (!defined $version) {
+ $version = 2;
+ } elsif ($version != 2) {
+ die "$mainrepo is a -V2 repo, -V$version specified\n"
+ }
+} elsif (-d "$mainrepo/objects") {
+ if (!defined $version) {
+ $version = 1;
+ } elsif ($version != 1) {
+ die "$mainrepo is a -V1 repo, -V$version specified\n"
+ }
+}
+
+$version = 1 unless defined $version;
+
+if ($version == 1 && defined $skip) {
+ die "--skip is only supported for -V2 repos\n";
+}
if ($version >= 2) {
require PublicInbox::V2Writable;
-primary_address => $address[0],
};
$ibx = PublicInbox::Inbox->new($ibx);
- my $v2w = PublicInbox::V2Writable->new($ibx, 1);
- $v2w->git_init(0);
- $v2w->idx_init(0);
- $v2w->done;
+ PublicInbox::V2Writable->new($ibx, 1)->init_inbox(0, $skip);
} elsif ($version == 1) {
x(qw(git init -q --bare), $mainrepo);
x(@x, "$pfx.url", $http_url);
x(@x, "$pfx.mainrepo", $mainrepo);
+if (defined($indexlevel)) {
+ x(@x, "$pfx.indexlevel", $indexlevel);
+}
+
rename $pi_config_tmp, $pi_config or
die "failed to rename `$pi_config_tmp' to `$pi_config': $!\n";