To check whether an existing sequencer operation is in progress and error out, we currently check for the existence of the '.git/sequencer' directory. $ git cherry-pick foo..bar ... conflict in bar~1 ... ... .git/sequencer is created ... $ echo "resolved" >problematicfile $ git add problematicfile $ git commit # Success! $ git cherry-pick moo # .git/sequencer exists error: A cherry-pick or revert is in progress Although the sequencer state is useless without '.git/sequencer/todo', this case never occurs. However, in the light of the next patch, where will handle single-commit picks as a special case by not persisting '.git/sequencer/todo' in the first place, we are forced to reconsider. So, when starting a fresh sequencer invocation, remove the sequencer state carried over from a previous invocation if it's missing '.git/sequencer/todo'. Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> --- sequencer.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sequencer.c b/sequencer.c index 87f146b..8b2518c 100644 --- a/sequencer.c +++ b/sequencer.c @@ -649,11 +649,15 @@ static void walk_revs_populate_todo(struct replay_insn_list **todo_list, static int create_seq_dir(void) { + const char *todo_file = git_path(SEQ_TODO_FILE); const char *seq_dir = git_path(SEQ_DIR); - if (file_exists(seq_dir)) - return error(_("%s already exists."), seq_dir); - else if (mkdir(seq_dir, 0777) < 0) + if (file_exists(todo_file)) + return error(_("%s already exists."), todo_file); + + /* If todo_file doesn't exist, discard sequencer state */ + remove_sequencer_state(1); + if (mkdir(seq_dir, 0777) < 0) die_errno(_("Could not create sequencer directory '%s'."), seq_dir); return 0; } -- 1.7.6.351.gb35ac.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html