Re: [PATCH] fetch: fix non-conflicting tags not being committed
From: Karthik Nayak <hidden>
Date: 2025-11-03 21:22:34
Eric Sunshine [off-list ref] writes:
On Mon, Nov 3, 2025 at 8:49 AM Karthik Nayak [off-list ref] wrote:quoted
The commit 0e358de64a (fetch: use batched reference updates, 2025-05-19) updated the 'git-fetch(1)' command to use batched updates. This batches updates to gain performance improvements. When fetching references, each update is added to the transaction. Finally, when committing, individual updates are allowed to fail with reason, while the transaction itself succeeds. [...] Signed-off-by: Karthik Nayak <redacted> ---diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh@@ -1577,6 +1578,46 @@ test_expect_success REFFILES 'D/F conflict on case sensitive filesystem with loc +test_expect_success 'fetch --tags fetches existing tags' ' + test_when_finished rm -rf base repo && + ( + git init base && + git -C base commit --allow-empty -m "empty-commit" && + + git clone --bare base repo && + + git -C base tag tag-1 && + git -C repo for-each-ref >out && + test_grep ! "tag-1" out && + git -C repo fetch --tags && + git -C repo for-each-ref >out && + test_grep "tag-1" out + ) +'What is the purpose of wrapping this code in a subshell? Same question regarding the other test added by this patch.
It's not needed, I first created two subshells with cd into each of them. I let it be when I merged them. So let me remove them.
quoted
+test_expect_success 'fetch --tags fetches non-conflicting tags' ' + test_when_finished rm -rf base repo && + ( + git init base && + git -C base commit --allow-empty -m "empty-commit" && + git -C base tag tag-1 && + + git clone --bare base repo && + + git -C base tag tag-2 && + git -C repo for-each-ref >out && + test_grep ! "tag-2" out && + + git -C base commit --allow-empty -m "second empty-commit" && + git -C base tag -f tag-1 && + + ! git -C repo fetch --tags 2>out &&Should this be using `test_must_fail` rather than `!`?
Yes, will fix!
quoted
+ test_grep "tag-1 (would clobber existing tag)" out && + git -C repo for-each-ref >out && + test_grep "tag-2" out + ) +'
Attachments
- signature.asc [application/pgp-signature] 690 bytes