patchp5551: fix repeated runs with update-ref --no-deref
3 messages between Sep 26, 2026 and Sep 28, 2026, from Jon Simons, Jeff King, Junio C Hamano.
Plain Markdown or JSON for tools and agents. Diffs are folded; open one to read it.
Jon SimonsSep 26, 2026, 18:06 UTC on loreUpdate p5551-fetch-rescan.sh to pass `--no-deref` when deleting child test refs before each measured `git fetch`. Otherwise, for repeated runs, the second iteration will fail with:
fatal: multiple updates for 'refs/remotes/origin/master' (including
one via symref 'refs/remotes/origin/HEAD') are not allowedStarting with 3f763ddf28 (fetch: set remote/HEAD if it does not exist, 2024-11-22), `git fetch` instantiates the HEAD symref.
The test, introduced in 7893bf1720 (p5551: add a script to test fetch pack-dir rescans, 2017-11-20), predates that.
Signed-off-by: Jon Simons <jon@jonsimons.org>
---
t/perf/p5551-fetch-rescan.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to t/perf/p5551-fetch-rescan.sh +1 −1
diff --git a/t/perf/p5551-fetch-rescan.sh b/t/perf/p5551-fetch-rescan.sh
index b99dc23e32..0b3ff632fc 100755
--- a/t/perf/p5551-fetch-rescan.sh
+++ b/t/perf/p5551-fetch-rescan.sh
@@ -45,7 +45,7 @@ test_perf 'fetch' '
(
cd child &&
$MODERN_GIT for-each-ref --format="delete %(refname)" refs/remotes |
- $MODERN_GIT update-ref --stdin &&
+ $MODERN_GIT update-ref --stdin --no-deref &&
rm -vf .git/objects/$(echo $obj | sed "s|^..|&/|") &&
git fetch
base-commit: 0f8e75abebff0877cae681a3d5ff31ac47f54220
--
2.55.0
Re: [PATCH] p5551: fix repeated runs with update-ref --no-deref
On Sat, Sep 26, 2026 at 02:06:48PM -0400, Jon Simons wrote:
Show 12 quoted lines
> Update p5551-fetch-rescan.sh to pass `--no-deref` when deleting child
> test refs before each measured `git fetch`. Otherwise, for repeated
> runs, the second iteration will fail with:
>
> fatal: multiple updates for 'refs/remotes/origin/master' (including
> one via symref 'refs/remotes/origin/HEAD') are not allowed
>
> Starting with 3f763ddf28 (fetch: set remote/HEAD if it does not exist,
> 2024-11-22), `git fetch` instantiates the HEAD symref.
>
> The test, introduced in 7893bf1720 (p5551: add a script to test fetch
> pack-dir rescans, 2017-11-20), predates that.
Thanks, the explanation and patch both make sense.
This test could probably benefit from using --setup (which also didn't exist back when this test was written). But that's nothing new, and well outside the scope of your patch.
-Peff
Re: [PATCH] p5551: fix repeated runs with update-ref --no-deref
Jeff King <peff@peff.net> writes:
Show 22 quoted lines
> On Sat, Sep 26, 2026 at 02:06:48PM -0400, Jon Simons wrote:
>
>> Update p5551-fetch-rescan.sh to pass `--no-deref` when deleting child
>> test refs before each measured `git fetch`. Otherwise, for repeated
>> runs, the second iteration will fail with:
>>
>> fatal: multiple updates for 'refs/remotes/origin/master' (including
>> one via symref 'refs/remotes/origin/HEAD') are not allowed
>>
>> Starting with 3f763ddf28 (fetch: set remote/HEAD if it does not exist,
>> 2024-11-22), `git fetch` instantiates the HEAD symref.
>>
>> The test, introduced in 7893bf1720 (p5551: add a script to test fetch
>> pack-dir rescans, 2017-11-20), predates that.
>
> Thanks, the explanation and patch both make sense.
>
> This test could probably benefit from using --setup (which also didn't
> exist back when this test was written). But that's nothing new, and well
> outside the scope of your patch.
>
> -Peff
Thanks for writing and reviewing. Will queue and mark for 'next'.