From 71d1ffb1bf3d435a6804a0d85340965548def00d Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 28 Nov 2022 05:31:18 +0000 Subject: [PATCH] lei_mirror: initialize placeholders with "head" from manifest This only affects v2 epochs, but ensures our bases are covered, at least. We'll have to update PublicInbox::Fetch later to deal with "head" entries in manifest.js.gz, too. --- lib/PublicInbox/LeiMirror.pm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index d955ac3b..e6b3e32a 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -307,7 +307,7 @@ EOM } sub init_placeholder ($$$) { - my ($src, $edst, $owner) = @_; + my ($src, $edst, $ent) = @_; PublicInbox::Import::init_bare($edst); my $f = "$edst/config"; open my $fh, '>>', $f or die "open($f): $!"; @@ -321,13 +321,19 @@ sub init_placeholder ($$$) { ; will not fetch updates for it unless write permission is added. ; Hint: chmod +w $edst EOM - if (defined($owner)) { + if (defined($ent->{owner})) { print $fh <{owner} EOM } - close $fh or die "close:($f): $!"; + close $fh or die "close($f): $!"; + if (defined $ent->{head}) { + $f = "$edst/HEAD"; + open $fh, '>', $f or die "open($f): $!"; + print $fh $ent->{head}, "\n" or die "print($f): $!"; + close $fh or die "close($f): $!"; + } } sub reap_clone { # async, called via SIGCHLD @@ -410,7 +416,7 @@ failed to extract epoch number from $src my $o = $m->{$key}->{owner}; push(@{$task->{-owner}}, $edst, $o) if defined($o); } else { # create a placeholder so users only need to chmod +w - init_placeholder($src, $edst, $m->{$key}->{owner}); + init_placeholder($src, $edst, $m->{$key}); push @{$task->{-read_only}}, $edst; push @skip, $key; } -- 2.48.1