[PATCH v4 0/5] Use complete_action's todo list to do the rebase
From: Alban Gruin <hidden>
Date: 2019-11-24 17:45:40
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@gmail.com/
[1] http://public-inbox.org/git/1732521.CJWHkCQAay@andromeda/
[2] http://public-inbox.org/git/xmqqmuecnefe.fsf@gitster-ct.c.googlers.com/
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