Thread (43 messages) 43 messages, 4 authors, 2025-12-02

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

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help