filter-options: expand scaled numbers
[gitweb.git] / builtin / rebase--interactive.c
index aaf13c9621dccab23febee90f6617a6f87e45120..dd2a55ab1d956ef0937cfdb0e4e3fb026ac2ff81 100644 (file)
@@ -105,7 +105,7 @@ static int do_interactive_rebase(struct replay_opts *opts, unsigned flags,
        if (restrict_revision)
                argv_array_push(&make_script_args, restrict_revision);
 
-       ret = sequencer_make_script(todo_list,
+       ret = sequencer_make_script(the_repository, todo_list,
                                    make_script_args.argc, make_script_args.argv,
                                    flags);
        fclose(todo_list);
@@ -114,7 +114,8 @@ static int do_interactive_rebase(struct replay_opts *opts, unsigned flags,
                error(_("could not generate todo list"));
        else {
                discard_cache();
-               ret = complete_action(opts, flags, shortrevisions, onto_name, onto,
+               ret = complete_action(the_repository, opts, flags,
+                                     shortrevisions, onto_name, onto,
                                      head_hash, cmd, autosquash);
        }
 
@@ -140,7 +141,8 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
                *switch_to = NULL, *cmd = NULL;
        char *raw_strategies = NULL;
        enum {
-               NONE = 0, CONTINUE, SKIP, EDIT_TODO, SHOW_CURRENT_PATCH
+               NONE = 0, CONTINUE, SKIP, EDIT_TODO, SHOW_CURRENT_PATCH,
+               SHORTEN_OIDS, EXPAND_OIDS, CHECK_TODO_LIST, REARRANGE_SQUASH, ADD_EXEC
        } command = 0;
        struct option options[] = {
                OPT_BOOL(0, "ff", &opts.allow_ff, N_("allow fast-forward")),
@@ -161,6 +163,16 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
                            EDIT_TODO),
                OPT_CMDMODE(0, "show-current-patch", &command, N_("show the current patch"),
                            SHOW_CURRENT_PATCH),
+               OPT_CMDMODE(0, "shorten-ids", &command,
+                       N_("shorten commit ids in the todo list"), SHORTEN_OIDS),
+               OPT_CMDMODE(0, "expand-ids", &command,
+                       N_("expand commit ids in the todo list"), EXPAND_OIDS),
+               OPT_CMDMODE(0, "check-todo-list", &command,
+                       N_("check the todo list"), CHECK_TODO_LIST),
+               OPT_CMDMODE(0, "rearrange-squash", &command,
+                       N_("rearrange fixup/squash lines"), REARRANGE_SQUASH),
+               OPT_CMDMODE(0, "add-exec-commands", &command,
+                       N_("insert exec commands in todo list"), ADD_EXEC),
                OPT_STRING(0, "onto", &onto, N_("onto"), N_("onto")),
                OPT_STRING(0, "restrict-revision", &restrict_revision,
                           N_("restrict-revision"), N_("restrict revision")),
@@ -203,6 +215,7 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
        flags |= abbreviate_commands ? TODO_LIST_ABBREVIATE_CMDS : 0;
        flags |= rebase_merges ? TODO_LIST_REBASE_MERGES : 0;
        flags |= rebase_cousins > 0 ? TODO_LIST_REBASE_COUSINS : 0;
+       flags |= command == SHORTEN_OIDS ? TODO_LIST_SHORTEN_IDS : 0;
 
        if (rebase_cousins >= 0 && !rebase_merges)
                warning(_("--[no-]rebase-cousins has no effect without "
@@ -220,14 +233,14 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
        case SKIP: {
                struct string_list merge_rr = STRING_LIST_INIT_DUP;
 
-               rerere_clear(&merge_rr);
+               rerere_clear(the_repository, &merge_rr);
                /* fallthrough */
        case CONTINUE:
-               ret = sequencer_continue(&opts);
+               ret = sequencer_continue(the_repository, &opts);
                break;
        }
        case EDIT_TODO:
-               ret = edit_todo_list(flags);
+               ret = edit_todo_list(the_repository, flags);
                break;
        case SHOW_CURRENT_PATCH: {
                struct child_process cmd = CHILD_PROCESS_INIT;
@@ -238,6 +251,19 @@ int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
 
                break;
        }
+       case SHORTEN_OIDS:
+       case EXPAND_OIDS:
+               ret = transform_todos(the_repository, flags);
+               break;
+       case CHECK_TODO_LIST:
+               ret = check_todo_list(the_repository);
+               break;
+       case REARRANGE_SQUASH:
+               ret = rearrange_squash(the_repository);
+               break;
+       case ADD_EXEC:
+               ret = sequencer_add_exec_commands(the_repository, cmd);
+               break;
        default:
                BUG("invalid command '%d'", command);
        }