From 0b6098f90d269a57e04ba1c1d587891acdad4e3f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 28 Nov 2022 05:32:02 +0000 Subject: [PATCH] lei_mirror: properly pack-refs in non-forkgroup repos We need to ensure `git update-ref --stdin' is complete before running `git pack-refs', otherwise loose refs can remain while update-ref is still running. --- lib/PublicInbox/LeiMirror.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index 04d9494c..4464b6b1 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -315,7 +315,12 @@ sub fgrp_update { upr($lei, $w, 'create', $ref, $oid); } close($w) or warn "E: close(update-ref --stdin): $! (need git 1.8.5+)\n"; - $LIVE->{$pid} = [ \&reap_cmd, $fgrp, $cmd ]; + my $pack = PublicInbox::OnDestroy->new($$, \&pack_dst, $fgrp); + $LIVE->{$pid} = [ \&reap_cmd, $fgrp, $cmd, $pack ]; +} + +sub pack_dst { # packs lightweight satellite repos + my ($fgrp) = @_; pack_refs($fgrp, $fgrp->{cur_dst}); } -- 2.44.0