=head1 SYNOPSIS
- public-inbox-xcpdb INBOX_DIR
+ public-inbox-xcpdb [OPTIONS] INBOX_DIR
=head1 DESCRIPTION
recover from Xapian database modifications from
L<public-inbox-watch(1)> or L<public-inbox-mda(1)>.
-This is intended for upgrading the database format used by
-Xapian. It DOES NOT upgrade the schema used by the
-public-inbox PSGI search interface (see
-L<public-inbox-index(1)>).
+=head1 OPTIONS
+
+=over
+
+=item --compact
+
+In addition to performing the copy operation, run L<xapian-compact(1)>
+on each Xapian partition after copying but before finalizing it.
+Compared to the cost of copying a Xapian database, compacting a
+Xapian database takes only around 5% of the time required to copy.
+
+Compared to L<public-inbox-compact(1)>, use of this option is
+preferable for gigantic inboxes where the coarse-grained lock
+currently required for L<public-inbox-compact(1)> can cause
+the compaction to take hours at-a-time.
+
+=item --blocksize / --no-full / --fuller
+
+These options are passed directly to L<xapian-compact(1)> when
+used with C<--compact>.
+
+=back
=head1 ENVIRONMENT
=head1 UPGRADING
+This tool is intended for admins upgrading Xapian search databases
+used by public-inbox, NOT users upgrading public-inbox itself.
+
+In particular, it DOES NOT upgrade the schema used by the
+PSGI search interface (see L<public-inbox-index(1)>).
+
=head1 CONTACT
Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>
use PublicInbox::Xapcmd;
use PublicInbox::Admin;
PublicInbox::Admin::require_or_die('-search');
-my $usage = "Usage: public-inbox-xcpdb INBOX_DIR\n";
+my $usage = "Usage: public-inbox-xcpdb [--compact] INBOX_DIR\n";
my $opt = {};
GetOptions($opt, qw(compact), @PublicInbox::Xapcmd::COMPACT_OPT) or
die "bad command-line args\n$usage";