]> Sergey Matveev's repositories - public-inbox.git/commitdiff
clone|fetch: support passing --prune(-tags) to `git fetch'
authorEric Wong <e@80x24.org>
Mon, 28 Nov 2022 05:32:10 +0000 (05:32 +0000)
committerEric Wong <e@80x24.org>
Mon, 28 Nov 2022 23:38:58 +0000 (23:38 +0000)
We need to be able to get rid of removed branches and tags on
the remote.  --prune-tags is implied for non-objstore repos,
and incompatible with objstore repos.

Documentation/public-inbox-clone.pod
Documentation/public-inbox-fetch.pod
lib/PublicInbox/LeiMirror.pm
script/public-inbox-clone
script/public-inbox-fetch

index 9288b175a29abd1eea0e37957c75767d3b3ed85f..bcf7dcc1fea20e35357a07e7c0e83e3eb34adc15 100644 (file)
@@ -104,6 +104,13 @@ C<DESTINATION> directory.  If only C<--manifest => is specified
 where C<FILE > is an empty string (C<"">), then C<manifest.js.gz>
 (C<$DESTINATION/manifest.js.gz>) is the implied value of C<FILE>.
 
+=item -p
+
+=item --prune
+
+Pass the C<--prune> and C<--prune-tags> flags to L<git-fetch(1)>
+calls on incremental clones.
+
 =item -n
 
 =item --dry-run
index c78ffc0bc13769f418c0a512c248fc1097dd62a3..c5e73d38c1ae3447fdcf4d56c18b9b9681c70401 100644 (file)
@@ -61,6 +61,12 @@ there are no updates:
        public-inbox-fetch -q --exit-code && public-inbox-index
        test $? -eq 0 || exit $?
 
+=item -p
+
+=item --prune
+
+Pass the C<--prune> and C<--prune-tags> flags to L<git-fetch(1)> calls.
+
 =item -v
 
 =item --verbose
index 0e8689ca71c0d4a0c447076aa748ac578627f653..2473c74b861c96520a715447ba69c6e43ac7d2de 100644 (file)
@@ -275,6 +275,7 @@ sub fetch_args ($$) {
        push @cmd, '-q' if $lei->{opt}->{quiet} ||
                        ($lei->{opt}->{jobs} // 1) > 1;
        push @cmd, '-v' if $lei->{opt}->{verbose};
+       push(@cmd, '-p') if $lei->{opt}->{prune};
        @cmd;
 }
 
@@ -527,6 +528,7 @@ sub resume_fetch {
        }
        my $cmd = [ @{$self->{-torsocks}}, @git,
                        fetch_args($self->{lei}, $opt), $rn ];
+       push @$cmd, '-P' if $self->{lei}->{prune}; # --prune-tags implied
        start_cmd($self, $cmd, $opt, $fini);
 }
 
index 9a22fa2166a9269907386b4a09c50a064acd4594..df9ddd3765fdc01b36653ab86b4d05f0b908978a 100755 (executable)
@@ -24,6 +24,7 @@ options:
 EOF
 GetOptions($opt, qw(help|h quiet|q verbose|v+ C=s@ c=s@ include|I=s@ exclude=s@
        inbox-config=s inbox-version=i objstore=s manifest=s
+       prune|p
        dry-run|n jobs|j=i no-torsocks torsocks=s epoch=s)) or die $help;
 if ($opt->{help}) { print $help; exit };
 require PublicInbox::Admin; # loads Config
index 4b991a90614bd449234608780258571b1be237c4..6fd15328a96e5783e9ce1a466db914b38da40034 100755 (executable)
@@ -23,6 +23,7 @@ options:
     -C DIR            chdir to specified directory
 EOF
 GetOptions($opt, qw(help|h quiet|q verbose|v+ C=s@ c=s@ try-remote|T=s@
+       prune|p
        no-torsocks torsocks=s exit-code)) or die $help;
 if ($opt->{help}) { print $help; exit };
 require PublicInbox::Fetch; # loads Admin