As with public-inbox-fetch, we shouldn't waste time fetching into read-only directories, since --epoch= will make unwanted epoch directories read-only placeholders. --- lib/PublicInbox/LeiMirror.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index 967a6422..3ec8170f 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -593,8 +593,15 @@ sub clone_v1 { die "$uri is a v1 inbox, --epoch is not supported\n"; $self->{-torsocks} //= $curl->torsocks($lei, $uri) or return; my $dst = $self->{cur_dst} // $self->{dst}; - my $fini = PublicInbox::OnDestroy->new($$, \&v1_done, $self); my $resume = -d $dst; + if ($resume) { # respect read-only cloned w/ --epoch= + my @st = stat(_); # for root + if (!-w _ || !($st[2] & 0222)) { + warn "# skipping $dst, not writable\n"; + return; + } + } + my $fini = PublicInbox::OnDestroy->new($$, \&v1_done, $self); if (my $fgrp = forkgroup_prep($self, $uri)) { $fgrp->{-fini} = $fini; if ($resume) {