]> Kevux Git Server - rit/commit
receive-pack: fix updateInstead with core.worktree
authorAlyssa Ross <hi@alyssa.is>
Mon, 25 May 2026 16:23:12 +0000 (18:23 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 May 2026 22:54:18 +0000 (07:54 +0900)
commit44d04e442683b53ed618b74861f056f93fcbd783
treedbbf9588470b68270ff4e3b7aa46ecc3f0f6a204
parent67ad42147a7acc2af6074753ebd03d904476118f
receive-pack: fix updateInstead with core.worktree

Before a8cc594333 (hooks: fix an obscure TOCTOU "did we just run a
hook?" race, 2022-03-07), when receive.denyCurrentBranch is set to
updateInstead, only one of push_to_checkout() or push_to_deploy()
was called.  That commit changed to always call push_to_checkout(),
and then to call push_to_deploy() if push_to_checkout() didn't run
anything.

This change didn't take into account that push_to_checkout() had a
side effect of modifying env, and that modified env broke updating
the worktree in push_to_deploy() if core.worktree was configured.
To fix this, only mutate the environment used inside
push_to_commit(), rather than the environment that might later be
passed to push_to_deploy().

Signed-off-by: Alyssa Ross <hi@alyssa.is>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
t/t5516-fetch-push.sh