This can be seen as a continuation of ag/reduce-rewriting-todo. Currently, complete_action() releases its todo list before calling sequencer_continue(), which reloads the todo list from the disk. This series removes this useless round trip. Patches 1, 2, and 3 originally come from a series meaning to improve rebase.missingCommitsCheck[0]. In the original series, I wanted to check for missing commits in read_populate_todo(), so a warning could be issued after a `rebase --continue' or an `exec' commands. But, in the case of the initial edit, it is already checked in complete_action(), and would be checked a second time in sequencer_continue() (a caller of read_populate_todo()). So I hacked up sequencer_continue() to accept a pointer to a todo list, and if not null, would skip the call to read_populate_todo(). (This was really ugly, to be honest.) Some issues arose with git-prompt.sh[1], hence 1, 2 and 3. Patch 5 is a new approach to what I did first. Instead of bolting a new parameter to sequencer_continue(), this makes complete_action() calling directly pick_commits(). This is based on 4c86140027 ("Third batch"). Changes since v3: - s/amount/number/ on patches 2 and 3, according to a comment from Junio[2] that I had forgotten before I sent the v3 X-( The tip of this series is tagged as reduce-todo-list-cont-v4 at https://github.com/agrn/git. [0] http://public-inbox.org/git/20190717143918.7406-1-alban.gruin@xxxxxxxxx/ [1] http://public-inbox.org/git/1732521.CJWHkCQAay@andromeda/ [2] http://public-inbox.org/git/xmqqmuecnefe.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/ Alban Gruin (5): sequencer: update `total_nr' when adding an item to a todo list sequencer: update `done_nr' when skipping commands in a todo list sequencer: move the code writing total_nr on the disk to a new function rebase: fill `squash_onto' in get_replay_opts() sequencer: directly call pick_commits() from complete_action() builtin/rebase.c | 5 +++++ sequencer.c | 32 +++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-) Diff-intervalle contre v3 : 1: 11a221e82e = 1: 11a221e82e sequencer: update `total_nr' when adding an item to a todo list 2: 76a3af70b6 ! 2: 6b402a3070 sequencer: update `done_nr' when skipping commands in a todo list @@ Metadata ## Commit message ## sequencer: update `done_nr' when skipping commands in a todo list - In a todo list, `done_nr' is the amount of commands that were executed + In a todo list, `done_nr' is the number of commands that were executed or skipped, but skip_unnecessary_picks() did not update it. This variable is mostly used by command prompts (ie. git-prompt.sh and 3: 9c5bd30465 ! 3: 0171db4fba sequencer: move the code writing total_nr on the disk to a new function @@ Metadata ## Commit message ## sequencer: move the code writing total_nr on the disk to a new function - The total amount of commands can be used to show the progression of the + The total number of commands can be used to show the progression of the rebasing in a shell. It is written to the disk by read_populate_todo() when the todo list is loaded from sequencer_continue() or pick_commits(), but not by complete_action(). 4: bc3d69a10e = 4: 88f6335c37 rebase: fill `squash_onto' in get_replay_opts() 5: e7691db66b = 5: 53586b1bed sequencer: directly call pick_commits() from complete_action() -- 2.24.0