checkout: inform the user when removing branch state

After a successful switch, if a merge, cherry-pick or revert is ongoing,
it is canceled. This behavior has been with us from the very early
beginning, soon after git-merge was created but never actually
documented [1]. It may be a good idea to be transparent and tell the
user if some operation is canceled.

I consider this a better way of telling the user than just adding a
sentence or two in git-checkout.txt, which will be mostly ignored
anyway.

PS. Originally I wanted to print more details like

    warning: cancelling an in-progress merge from <SHA-1>

which may allow some level of undo if the user wants to. But that seems
a lot more work. Perhaps it can be improved later if people still want
that.

[1] ... and I will try not to argue whether it is a sensible behavior.
There is some more discussion here if people are interested:
CACsJy8Axa5WsLSjiscjnxVK6jQHkfs-gH959=YtUvQkWriAk5w@mail.gmail.com

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy
2019-03-29 17:38:59 +07:00
committed by Junio C Hamano
parent af9ded5b70
commit f4a4b9aca3
7 changed files with 14 additions and 11 deletions

View File

@ -337,11 +337,14 @@ void create_branch(struct repository *r,
free(real_ref);
}
void remove_branch_state(struct repository *r)
void remove_branch_state(struct repository *r, int verbose)
{
unlink(git_path_cherry_pick_head(r));
unlink(git_path_revert_head(r));
unlink(git_path_merge_head(r));
if (!unlink(git_path_cherry_pick_head(r)) && verbose)
warning(_("cancelling a cherry picking in progress"));
if (!unlink(git_path_revert_head(r)) && verbose)
warning(_("cancelling a revert in progress"));
if (!unlink(git_path_merge_head(r)) && verbose)
warning(_("cancelling a merge in progress"));
unlink(git_path_merge_rr(r));
unlink(git_path_merge_msg(r));
unlink(git_path_merge_mode(r));