From: Junio C Hamano <gitster@pobox.com>
To: "Orgad Shaneh via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Orgad Shaneh" <orgads@gmail.com>,
"Orgad Shaneh" <orgad.shaneh@audiocodes.com>
Subject: Re: [PATCH 2/2] fetch: clobber existing tags with --prune-tags
Date: Sat, 21 Mar 2026 11:26:59 -0700 [thread overview]
Message-ID: <xmqq1phdavik.fsf@gitster.g> (raw)
In-Reply-To: <b444fa7af9f39960652209143c9845a47efd58e1.1771187016.git.gitgitgadget@gmail.com> (Orgad Shaneh via GitGitGadget's message of "Sun, 15 Feb 2026 20:23:36 +0000")
"Orgad Shaneh via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
>
> This was documented but not implemented.
And instead what did the command do / how did the command behave?
It also is curious when it was "broken". It could be that it was
broken from day one when 97716d21 (fetch: add a --prune-tags option
and fetch.pruneTags config, 2018-02-09) was written, c1a7902f (Merge
branch 'ab/fetch-prune', 2018-03-06) merged it, and Git 2.17 was
shipped with it, but knowing Ævar (by the way where is he these
days???), I somehow doubt it.
And unless it was broken from day one, we must find out if the
change in behaviour was deliberate, in which case it would be the
doucmentation and not the implementation that needs fixing.
> In the flag description:
> prune local tags no longer on remote *and clobber changed tags*
>
> In the documentation:
> ... to prune local tags that don't exist on the remote, *and
> force-update those tags that differ*.
> ...
> diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
> index 31df7faf56..4d29043baf 100755
> --- a/t/t5516-fetch-push.sh
> +++ b/t/t5516-fetch-push.sh
> @@ -1092,7 +1092,7 @@ test_force_fetch_tag () {
> tag_type_description=$1
> tag_args=$2
>
> - test_expect_success "fetch will not clobber an existing $tag_type_description without --force" "
> + test_expect_success "fetch will not clobber an existing $tag_type_description without --force or --prune-tags" "
> mk_test testrepo heads/main &&
> mk_child testrepo child1 &&
> mk_child testrepo child2 &&
> @@ -1108,7 +1108,13 @@ test_force_fetch_tag () {
> git -C ../child1 fetch origin '+refs/tags/*:refs/tags/*' &&
> git tag $tag_args testTag HEAD^ &&
> test_must_fail git -C ../child1 fetch origin tag testTag &&
> - git -C ../child1 fetch --force origin tag testTag
> + git -C ../child1 fetch --force origin tag testTag &&
> + git tag $tag_args testTag HEAD &&
> + test_must_fail git -C ../child1 fetch origin tag testTag &&
> + git -C ../child1 fetch --prune-tags origin tag testTag &&
> + git tag $tag_args testTag HEAD^ &&
> + test_must_fail git -C ../child1 fetch origin tag testTag &&
> + git -C ../child1 -c fetch.prunetags=true fetch origin tag testTag
> )
> "
> }
None of the steps we see in the added test do not seem to check that
--prune-tags does clobber existing tag that no longer exists on the
other side. It only checks the "git fetch" command exits with
status 0, but does not see if the tag actually went away after the
operation is done.
next prev parent reply other threads:[~2026-03-21 18:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-15 20:23 [PATCH 0/2] fetch: clobber existing tags with --prune-tags Orgad Shaneh via GitGitGadget
2026-02-15 20:23 ` [PATCH 1/2] fetch: add a test for --force flag Orgad Shaneh via GitGitGadget
2026-02-15 20:23 ` [PATCH 2/2] fetch: clobber existing tags with --prune-tags Orgad Shaneh via GitGitGadget
2026-03-18 8:27 ` Orgad Shaneh
2026-03-21 18:26 ` Junio C Hamano [this message]
2026-03-26 7:57 ` Orgad Shaneh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq1phdavik.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=orgad.shaneh@audiocodes.com \
--cc=orgads@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox