Merge branch 'jc/receive-deny-current-branch-fix'
The receive.denyCurrentBranch=updateInstead codepath kicked in even when the push should have been rejected due to other reasons, such as it does not fast-forward or the update-hook rejects it, which has been corrected. * jc/receive-deny-current-branch-fix: receive: denyCurrentBranch=updateinstead should not blindly update
This commit is contained in:
@ -1025,6 +1025,7 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
const char *ret;
|
||||
struct object_id *old_oid = &cmd->old_oid;
|
||||
struct object_id *new_oid = &cmd->new_oid;
|
||||
int do_update_worktree = 0;
|
||||
|
||||
/* only refs/... are allowed */
|
||||
if (!starts_with(name, "refs/") || check_refname_format(name + 5, 0)) {
|
||||
@ -1050,9 +1051,8 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
refuse_unconfigured_deny();
|
||||
return "branch is currently checked out";
|
||||
case DENY_UPDATE_INSTEAD:
|
||||
ret = update_worktree(new_oid->hash);
|
||||
if (ret)
|
||||
return ret;
|
||||
/* pass -- let other checks intervene first */
|
||||
do_update_worktree = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1117,6 +1117,12 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
return "hook declined";
|
||||
}
|
||||
|
||||
if (do_update_worktree) {
|
||||
ret = update_worktree(new_oid->hash);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (is_null_oid(new_oid)) {
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
if (!parse_object(the_repository, old_oid)) {
|
||||
|
||||
Reference in New Issue
Block a user