diff options
author | Phillip Wood <phillip.wood@dunelm.org.uk> | 2022-01-26 16:05:40 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-01-26 23:08:53 +0300 |
commit | 4840002a5f44a4c256c55f70c59d3b0506d14e21 (patch) | |
tree | 4dc007512d0fe02557d1dfccc94bcb0ea63a9163 | |
parent | ab2fba0868860e610619f885031217d9cc63097a (diff) |
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>
-rw-r--r-- | reset.c | 2 | ||||
-rwxr-xr-x | t/t5403-post-checkout-hook.sh | 6 |
2 files changed, 6 insertions, 2 deletions
@@ -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); diff --git a/t/t5403-post-checkout-hook.sh b/t/t5403-post-checkout-hook.sh index fd2817b406..d118181690 100755 --- a/t/t5403-post-checkout-hook.sh +++ b/t/t5403-post-checkout-hook.sh @@ -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 + ' } |