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

Re: [PATCH] fetch: fix non-conflicting tags not being committed

From: Eric Sunshine <hidden>
Date: 2025-11-03 17:53:29

On Mon, Nov 3, 2025 at 8:49 AM Karthik Nayak [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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.
+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 `!`?
+               test_grep "tag-1  (would clobber existing tag)" out &&
+               git -C repo for-each-ref >out &&
+               test_grep "tag-2" out
+       )
+'
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help