"Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > @@ -3293,6 +3312,9 @@ static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts) > unlink(rebase_path_stopped_sha()); > unlink(rebase_path_amend()); > delete_ref(NULL, "REBASE_HEAD", NULL, REF_NO_DEREF); > + > + if (item->command == TODO_BREAK) > + return stopped_at_head(); > } The earlier one had "break;" here, which broke out of the while() loop, let the control reach "if (is_reabse_i(opts)) {" block after the loop, and the block would have noticed that current < nr and returned 0. So from the point of view of the overall control flow of the caller of this function, there is no change relative to v2. The only difference in v3 is that stopped_at_head() gives a useful message. Good.