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) {

Reply via email to