Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > --quit is supposed to be --abort but without restoring HEAD. Leaving > CHERRY_PICK_HEAD behind could make other commands mistake that > cherry-pick is still ongoing (e.g. "git commit --amend" will refuse to > work). Clean it too. > > For abort, this job of deleting CHERRY_PICK_HEAD is on "git reset" so > we don't need to do anything else. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- Please do not hide this bugfix behind 1/2 that is likely to require longer to cook than the fix itself. And more importantly, it makes it impossible to merge down the fix to the maintenance track, as I do not think we'd want to merge 1/2 there. Thanks. > builtin/revert.c | 9 +++++++-- > t/t3510-cherry-pick-sequence.sh | 3 ++- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/builtin/revert.c b/builtin/revert.c > index 76f0a35b07..e94a4ead2b 100644 > --- a/builtin/revert.c > +++ b/builtin/revert.c > @@ -7,6 +7,7 @@ > #include "rerere.h" > #include "dir.h" > #include "sequencer.h" > +#include "branch.h" > > /* > * This implements the builtins revert and cherry-pick. > @@ -191,8 +192,12 @@ static int run_sequencer(int argc, const char **argv, struct replay_opts *opts) > opts->gpg_sign = xstrdup_or_null(opts->gpg_sign); > opts->strategy = xstrdup_or_null(opts->strategy); > > - if (cmd == 'q') > - return sequencer_remove_state(opts); > + if (cmd == 'q') { > + int ret = sequencer_remove_state(opts); > + if (!ret) > + remove_branch_state(the_repository); > + return ret; > + } > if (cmd == 'c') > return sequencer_continue(opts); > if (cmd == 'a') > diff --git a/t/t3510-cherry-pick-sequence.sh b/t/t3510-cherry-pick-sequence.sh > index 3505b6aa14..9d121f8ce6 100755 > --- a/t/t3510-cherry-pick-sequence.sh > +++ b/t/t3510-cherry-pick-sequence.sh > @@ -103,7 +103,8 @@ test_expect_success '--quit cleans up sequencer state' ' > pristine_detach initial && > test_expect_code 1 git cherry-pick base..picked && > git cherry-pick --quit && > - test_path_is_missing .git/sequencer > + test_path_is_missing .git/sequencer && > + test_path_is_missing .git/CHERRY_PICK_HEAD > ' > > test_expect_success '--quit keeps HEAD and conflicted index intact' '