@@ -4608,7 +4608,7 @@ int complete_action(struct replay_opts *opts, unsigned flags,
struct todo_list new_todo = TODO_LIST_INIT;
struct strbuf *buf = &todo_list->buf;
struct object_id oid;
- int command_count;
+ int command_count, res;
get_oid(onto, &oid);
shortonto = find_unique_abbrev(&oid, DEFAULT_ABBREV);
@@ -4633,27 +4633,16 @@ int complete_action(struct replay_opts *opts, unsigned flags,
return error(_("nothing to do"));
}
- todo_list_transform(todo_list, flags | TODO_LIST_SHORTEN_IDS);
-
- append_todo_help(flags & TODO_LIST_KEEP_EMPTY, command_count,
- shortrevisions, shortonto, buf);
-
- if (write_message(buf->buf, buf->len, todo_file, 0))
- return error_errno(_("could not write '%s'"), todo_file);
-
- if (copy_file(rebase_path_todo_backup(), todo_file, 0666))
- return error(_("could not copy '%s' to '%s'."), todo_file,
- rebase_path_todo_backup());
-
- if (launch_sequence_editor(todo_file, &new_todo.buf, NULL)) {
+ res = edit_todo_list(todo_list, &new_todo, flags,
+ command_count, shortrevisions, shortonto);
+ if (res == -1)
+ return -1;
+ else if (res == -2) {
apply_autostash(opts);
sequencer_remove_state(opts);
return -1;
- }
-
- strbuf_stripspace(&new_todo.buf, 1);
- if (new_todo.buf.len == 0) {
+ } else if (res == -3) {
apply_autostash(opts);
sequencer_remove_state(opts);
todo_list_release(&new_todo);
@@ -4668,8 +4657,6 @@ int complete_action(struct replay_opts *opts, unsigned flags,
return -1;
}
- todo_list_transform(&new_todo, flags & ~(TODO_LIST_SHORTEN_IDS));
-
if (opts->allow_ff && skip_unnecessary_picks(&new_todo, &oid)) {
todo_list_release(&new_todo);
return error(_("could not skip unnecessary pick commands"));
This changes complete_action() to use edit_todo_list(), now that it can handle the initial edit of the todo list. Signed-off-by: Alban Gruin <alban.gruin@gmail.com> --- sequencer.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-)