# [PATCH] p5551: fix repeated runs with update-ref --no-deref

3 messages from 2026-09-26 to 2026-09-28. Participants: Jon Simons, Jeff King, Junio C Hamano.
Thread: https://gitlist.dev/t/66396

## Jon Simons, 2026-09-26 18:06

Subject: [PATCH] p5551: fix repeated runs with update-ref --no-deref
Message-ID: <20260926180648.60770-1-jon@jonsimons.org>

```
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.

Signed-off-by: Jon Simons <jon@jonsimons.org>
---
 t/perf/p5551-fetch-rescan.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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


```

## Jeff King, 2026-09-28 04:05

Subject: Re: [PATCH] p5551: fix repeated runs with update-ref --no-deref
Message-ID: <20260928040511.GA498426@coredump.intra.peff.net>
In-Reply-To: <20260926180648.60770-1-jon@jonsimons.org>

```
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

```

## Junio C Hamano, 2026-09-28 18:30

Subject: Re: [PATCH] p5551: fix repeated runs with update-ref --no-deref
Message-ID: <xmqqcxtxmdor.fsf@gitster.g>
In-Reply-To: <20260928040511.GA498426@coredump.intra.peff.net>

```
Jeff King <peff@peff.net> writes:

> 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'.

```
