From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> When the builtin rebase starts an interactive rebase it parses the options and then repackages them and forks `rebase--interactive`. This series refactors rebase--interactive so that interactive rebases can be started by the builtin rebase without forking. My motivation was to make it easier to debug the sequencer but this should help future maintainability. This series involves some code movement so viewing the diffs with --color-moved is recommended. These patches are based on a merge of master [e902e9bcae ("The second batch", 2019-03-11)] and ag/sequencer-reduce-rewriting-todo ed35d18841 ("rebase--interactive: move transform_todo_file()", 2019-03-05). They can be fetched from the tag rebase-i-no-fork/rfc at https://github.com/phillipwood/git.git Phillip Wood (11): sequencer: always discard index after checkout rebase: rename write_basic_state() rebase: use OPT_RERERE_AUTOUPDATE() rebase -i: combine rebase--interactive.c with rebase.c rebase -i: remove duplication rebase -i: use struct commit when parsing options rebase -i: use struct object_id for squash_onto rebase -i: use struct rebase_options to parse args rebase -i: use struct rebase_options in do_interactive_rebase() rebase: use a common action enum rebase -i: run without forking rebase--interactive Makefile | 1 - builtin/rebase--interactive.c | 377 -------------------- builtin/rebase.c | 625 ++++++++++++++++++++++++++-------- parse-options-cb.c | 34 ++ parse-options.h | 4 + sequencer.c | 42 ++- sequencer.h | 7 +- 7 files changed, 556 insertions(+), 534 deletions(-) delete mode 100644 builtin/rebase--interactive.c -- 2.21.0