1
0
mirror of https://github.com/git/git.git synced 2024-09-28 08:49:45 +02:00

rebase --apply: don't run post-checkout hook if there is an error

The hook should only be run if the worktree and refs were successfully
updated. This primarily affects "rebase --apply" but also "rebase
--merge" when it fast-forwards.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Phillip Wood 2022-01-26 13:05:40 +00:00 committed by Junio C Hamano
parent ab2fba0868
commit 4840002a5f
2 changed files with 6 additions and 2 deletions

View File

@ -126,7 +126,7 @@ reset_head_refs:
ret = create_symref("HEAD", switch_to_branch,
reflog_head);
}
if (run_hook)
if (!ret && run_hook)
run_hook_le(NULL, "post-checkout",
oid_to_hex(head ? head : null_oid()),
oid_to_hex(oid), "1", NULL);

View File

@ -88,12 +88,16 @@ test_rebase () {
test_expect_success "rebase $args checkout does not remove untracked files" '
test_when_finished "test_might_fail git rebase --abort" &&
test_when_finished "rm -f .git/post-checkout.args" &&
git update-ref refs/heads/rebase-fast-forward three &&
git checkout two &&
rm -f .git/post-checkout.args &&
echo untracked >three.t &&
test_when_finished "rm three.t" &&
test_must_fail git rebase $args HEAD rebase-fast-forward 2>err &&
grep "untracked working tree files would be overwritten by checkout" err
grep "untracked working tree files would be overwritten by checkout" err &&
test_path_is_missing .git/post-checkout.args
'
}