[PATCH v4 0/5] Use complete_action's todo list to do the rebase
- From
Alban Gruin <alban.gruin@gmail.com>
- Date
- Nov 24, 2019, 17:43 UTC
- Message-ID
- <20191124174332.30887-1-alban.gruin@gmail.com>
- In-Reply-To
- <20191123143705.17280-1-alban.gruin@gmail.com>
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