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:

committed by
Junio C Hamano

parent
ab2fba0868
commit
4840002a5f
2
reset.c
2
reset.c
@ -126,7 +126,7 @@ reset_head_refs:
|
|||||||
ret = create_symref("HEAD", switch_to_branch,
|
ret = create_symref("HEAD", switch_to_branch,
|
||||||
reflog_head);
|
reflog_head);
|
||||||
}
|
}
|
||||||
if (run_hook)
|
if (!ret && run_hook)
|
||||||
run_hook_le(NULL, "post-checkout",
|
run_hook_le(NULL, "post-checkout",
|
||||||
oid_to_hex(head ? head : null_oid()),
|
oid_to_hex(head ? head : null_oid()),
|
||||||
oid_to_hex(oid), "1", NULL);
|
oid_to_hex(oid), "1", NULL);
|
||||||
|
@ -88,12 +88,16 @@ test_rebase () {
|
|||||||
|
|
||||||
test_expect_success "rebase $args checkout does not remove untracked files" '
|
test_expect_success "rebase $args checkout does not remove untracked files" '
|
||||||
test_when_finished "test_might_fail git rebase --abort" &&
|
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 update-ref refs/heads/rebase-fast-forward three &&
|
||||||
git checkout two &&
|
git checkout two &&
|
||||||
|
rm -f .git/post-checkout.args &&
|
||||||
echo untracked >three.t &&
|
echo untracked >three.t &&
|
||||||
test_when_finished "rm three.t" &&
|
test_when_finished "rm three.t" &&
|
||||||
test_must_fail git rebase $args HEAD rebase-fast-forward 2>err &&
|
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
|
||||||
|
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user