X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FAdminEdit.pm;h=4448dcc292767ab94c3dcb35397fce0094befcc9;hb=6accd690b16aa0bce7117286944d69f378611eb8;hp=b27c831b3ee30363795be25525dd5387d7e9fa85;hpb=455a1c0ef0519b2048c34d2fb31c9e9adbe3f507;p=public-inbox.git diff --git a/lib/PublicInbox/AdminEdit.pm b/lib/PublicInbox/AdminEdit.pm index b27c831b..4448dcc2 100644 --- a/lib/PublicInbox/AdminEdit.pm +++ b/lib/PublicInbox/AdminEdit.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2019 all contributors +# Copyright (C) 2019-2020 all contributors # License: AGPL-3.0+ # common stuff between -edit, -purge (and maybe -learn in the future) @@ -6,7 +6,7 @@ package PublicInbox::AdminEdit; use strict; use warnings; use PublicInbox::Admin; -our @OPT = qw(all force|f verbose|v!); +our @OPT = qw(all force|f verbose|v! help|h); sub check_editable ($) { my ($ibxs) = @_; @@ -25,19 +25,19 @@ sub check_editable ($) { # it's possible for a Xapian directory to exist, # but Search::Xapian to go missing/broken. # Make sure it's purged in that case: - $ibx->over or die "no over.sqlite3 in $ibx->{mainrepo}\n"; + $ibx->over or die "no over.sqlite3 in $ibx->{inboxdir}\n"; # $ibx->{search} is populated by $ibx->over call my $xdir_ro = $ibx->{search}->xdir(1); - my $npart = 0; - foreach my $part (<$xdir_ro/*>) { - if (-d $part && $part =~ m!/[0-9]+\z!) { + my $nshard = 0; + foreach my $shard (<$xdir_ro/*>) { + if (-d $shard && $shard =~ m!/[0-9]+\z!) { my $bytes = 0; - $bytes += -s $_ foreach glob("$part/*"); - $npart++ if $bytes; + $bytes += -s $_ foreach glob("$shard/*"); + $nshard++ if $bytes; } } - if ($npart) { + if ($nshard) { PublicInbox::Admin::require_or_die('-search'); } else { # somebody could "rm -r" all the Xapian directories; @@ -47,4 +47,21 @@ sub check_editable ($) { } } +# takes the output of V2Writable::purge and V2Writable::replace +# $rewrites = [ array commits keyed by epoch ] +sub show_rewrites ($$$) { + my ($fh, $ibx, $rewrites) = @_; + print $fh "$ibx->{inboxdir}:"; + if (scalar @$rewrites) { + my $epoch = -1; + my @out = map {; + ++$epoch; + "$epoch.git: ".(defined($_) ? $_ : '(unchanged)') + } @$rewrites; + print $fh join("\n\t", '', @out), "\n"; + } else { + print $fh " NONE\n"; + } +} + 1;