sequencer: offer helpful advice when a command was rescheduled
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 25 Apr 2018 12:28:33 +0000 (14:28 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 Apr 2018 03:28:42 +0000 (12:28 +0900)
Previously, we did that just magically, and potentially left some users
quite puzzled. Let's err on the safe side instead, telling the user what
is happening, and how they are supposed to continue.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sequencer.c
index eac1c341c1cac4508f4eb4506b6a3de1a014618c..f9c1ddb53857164dbb85491148ef462eb2424573 100644 (file)
@@ -2561,6 +2561,17 @@ static const char *reflog_message(struct replay_opts *opts,
        return buf.buf;
 }
 
+static const char rescheduled_advice[] =
+N_("Could not execute the todo command\n"
+"\n"
+"    %.*s"
+"\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+"    git rebase --edit-todo\n"
+"    git rebase --continue\n");
+
 static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts)
 {
        int res = 0;
@@ -2606,6 +2617,11 @@ static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts)
                                        opts, is_final_fixup(todo_list));
                        if (is_rebase_i(opts) && res < 0) {
                                /* Reschedule */
+                               advise(_(rescheduled_advice),
+                                      get_item_line_length(todo_list,
+                                                           todo_list->current),
+                                      get_item_line(todo_list,
+                                                    todo_list->current));
                                todo_list->current--;
                                if (save_todo(todo_list, opts))
                                        return -1;