]> git.ipfire.org Git - thirdparty/git.git/commit
receive: denyCurrentBranch=updateinstead should not blindly update
authorJunio C Hamano <gitster@pobox.com>
Fri, 19 Oct 2018 04:57:35 +0000 (13:57 +0900)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Oct 2018 06:13:32 +0000 (15:13 +0900)
commitb072a25fad21b8aecfa29f6ffb813a0a6194a764
tree361e7cb31b42f55f584a1b41e8c750580d5b4e19
parent268fbcd172cdb306e8a3e7143cc16677c963d6cd
receive: denyCurrentBranch=updateinstead should not blindly update

The handling of receive.denyCurrentBranch=updateInstead was added to
a switch statement that handles other values of the variable, but
all the other case arms only checked a condition to reject the
attempted push, or let later logic in the same function to still
intervene, so that a push that does not fast-forward (which is
checked after the switch statement in question) is still rejected.

But the handling of updateInstead incorrectly took immediate effect,
without giving other checks a chance to intervene.

Instead of calling update_worktree() that causes the side effect
immediately, just note the fact that we will need to call the
function later, and first give other checks a chance to reject the
request.  After the update-hook gets a chance to reject the push
(which happens as the last step in a series of checks), call
update_worktree() when we earlier detected the need to.

Reported-by: Rajesh Madamanchi
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
t/t5516-fetch-push.sh