All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Alban Gruin <alban.gruin@gmail.com>
Cc: git@vger.kernel.org, Phillip Wood <phillip.wood@dunelm.org.uk>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2 0/5] Use complete_action's todo list to do the rebase
Date: Mon, 14 Oct 2019 14:49:09 +0200 (CEST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.1910141445250.46@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <20191007092641.12661-1-alban.gruin@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6540 bytes --]

Hi Alban,

On Mon, 7 Oct 2019, Alban Gruin wrote:

> 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 v1:
>
>  - Rewording of patches 1, 2, 4 and 5 according to comments made by
>    Phillip Wood, Junio C Hamano and Johannes Schindelin.
>
> The tip of this series is tagged as "reduce-todo-list-cont-v2" 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/
>
> 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      | 26 ++++++++++++++++++--------
>  2 files changed, 23 insertions(+), 8 deletions(-)
>
> Diff-intervalle contre v1 :
> 1:  d177b0de1a ! 1:  9215b191c7 sequencer: update `total_nr' when adding an item to a todo list
>     @@ Metadata
>       ## Commit message ##
>          sequencer: update `total_nr' when adding an item to a todo list
>
>     -    `total_nr' is the total amount of items, done and toto, that are in a
>     -    todo list.  But unlike `nr', it was not updated when an item was
>     -    appended to the list.
>     +    `total_nr' is the total number of items, counting both done and todo,
>     +    that are in a todo list.  But unlike `nr', it was not updated when an
>     +    item was appended to the list.
>
>          This variable is mostly used by command prompts (ie. git-prompt.sh and
>     -    the like).
>     +    the like).  By forgetting to update it, the original code made it not
>     +    reflect the reality, but this flaw was masked by the code calling
>     +    unnecessarily read_todo_list() again to update the variable to its
>     +    correct value.  At the end of this series, the unnecessary call will be
>     +    removed, and the inconsistency addressed by this patch would start to
>     +    matter.
>
>          Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
>
> 2:  09fcbe159b ! 2:  7cad541092 sequencer: update `done_nr' when skipping commands in a todo list
>     @@ Commit message
>          or skipped, but skip_unnecessary_picks() did not update it.
>
>          This variable is mostly used by command prompts (ie. git-prompt.sh and
>     -    the like).
>     +    the like).  As in the previous commit, this inconsistent behaviour is
>     +    not a problem yet, but it would start to matter at the end of this
>     +    series the same reason.
>
>          Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
>
> 3:  26a18cd1a9 = 3:  7c9c4ddd30 sequencer: move the code writing total_nr on the disk to a new function
> 4:  5d74903cfe ! 4:  cd44fb4e10 rebase: fill `squash_onto' in get_replay_opts()
>     @@ Metadata
>       ## Commit message ##
>          rebase: fill `squash_onto' in get_replay_opts()
>
>     -    get_replay_opts() did not fill `squash_onto' if possible, meaning that
>     -    this field should be read from the disk by the sequencer through
>     -    read_populate_opts().  Without this, calling `pick_commits()' directly
>     -    will result in incorrect results with `rebase --root'.
>     +    Currently, the get_replay_opts() function does not initialise the
>     +    `squash_onto' field (which is used for the `--root' mode), only
>     +    read_populate_opts() does.  That would lead to incorrect results when
>     +    calling pick_commits() without reading the options from the disk first.
>
>          Let’s change that.
>
> 5:  dc803c671f ! 5:  523fdd35a1 sequencer: directly call pick_commits() from complete_action()
>     @@ Commit message
>          sequencer: directly call pick_commits() from complete_action()
>
>          Currently, complete_action() calls sequencer_continue() to do the
>     -    rebase.  Even though the former already has the todo list, the latter
>     -    loads it from the disk and parses it.  Calling directly pick_commits()
>     -    from complete_action() avoids this unnecessary round trip.
>     +    rebase.  Before the former calls pick_commits(), it
>     +
>     +     - calls read_and_refresh_cache() -- this is unnecessary here as we've
>     +       just called require_clean_work_tree()
>     +     - calls read_populate_opts() -- this is unnecessary as we're starting a
>     +       new rebase, so opts is fully populated
>     +     - loads the todo list -- this is unnecessary as we've just populated
>     +       the todo list
>     +     - commits any staged changes -- this is unnecessary as we're starting a
>     +       new rebase, so there are no staged changes
>     +     - calls record_in_rewritten() -- this is unnecessary as we're starting
>     +       a new rebase.
>     +
>     +    This changes complete_action() to directly call pick_commits() to avoid
>     +    these unnecessary steps.
>
>          Signed-off-by: Alban Gruin <alban.gruin@gmail.com>

This range-diff looks good to me!

I just verified that b2 addresses all the concerns I offered for v1.

Thanks,
Dscho

  parent reply	other threads:[~2019-10-14 12:49 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20190925201315.19722-1-alban.gruin@gmail.com>
2019-09-25 20:13 ` [PATCH v1 1/5] sequencer: update `total_nr' when adding an item to a todo list Alban Gruin
2019-10-02  2:10   ` Junio C Hamano
2019-10-02  8:06     ` Johannes Schindelin
2019-10-02  8:59       ` Junio C Hamano
2019-10-02  9:48         ` Johannes Schindelin
2019-10-02 18:03         ` Alban Gruin
2019-09-25 20:13 ` [PATCH v1 2/5] sequencer: update `done_nr' when skipping commands in " Alban Gruin
2019-09-25 20:13 ` [PATCH v1 3/5] sequencer: move the code writing total_nr on the disk to a new function Alban Gruin
2019-09-25 20:13 ` [PATCH v1 4/5] rebase: fill `squash_onto' in get_replay_opts() Alban Gruin
2019-09-27 13:30   ` Phillip Wood
2019-10-02  8:16     ` Johannes Schindelin
2019-10-02  9:32       ` Phillip Wood
2019-10-02 12:06         ` Johannes Schindelin
2019-09-25 20:13 ` [PATCH v1 5/5] sequencer: directly call pick_commits() from complete_action() Alban Gruin
2019-09-27 13:26   ` Phillip Wood
2019-10-02  8:20     ` Johannes Schindelin
2019-10-02 18:03       ` Alban Gruin
2019-10-02  2:38   ` Junio C Hamano
2019-10-02 18:37     ` Alban Gruin
2019-10-26  7:47   ` René Scharfe
2019-10-26 11:27     ` Alban Gruin
2019-10-28  1:39       ` Junio C Hamano
2019-10-28  3:20         ` Junio C Hamano
2019-09-25 20:20 ` [PATCH v1 0/5] Use complete_action's todo list to do the rebase Alban Gruin
2019-09-27 13:32 ` [PATCH v1 0/5] Use complete_action’s " Phillip Wood
2019-10-07  9:26 ` [PATCH v2 0/5] Use complete_action's " Alban Gruin
2019-10-07  9:26   ` [PATCH v2 1/5] sequencer: update `total_nr' when adding an item to a todo list Alban Gruin
2019-10-07  9:26   ` [PATCH v2 2/5] sequencer: update `done_nr' when skipping commands in " Alban Gruin
2019-10-07  9:26   ` [PATCH v2 3/5] sequencer: move the code writing total_nr on the disk to a new function Alban Gruin
2019-10-07  9:26   ` [PATCH v2 4/5] rebase: fill `squash_onto' in get_replay_opts() Alban Gruin
2019-10-07  9:26   ` [PATCH v2 5/5] sequencer: directly call pick_commits() from complete_action() Alban Gruin
2019-10-08  2:45   ` [PATCH v2 0/5] Use complete_action's todo list to do the rebase Junio C Hamano
2019-10-08 16:18     ` Alban Gruin
2019-10-14 12:49   ` Johannes Schindelin [this message]
2019-11-23 14:37   ` [PATCH v3 " Alban Gruin
2019-11-23 14:37     ` [PATCH v3 1/5] sequencer: update `total_nr' when adding an item to a todo list Alban Gruin
2019-11-23 14:37     ` [PATCH v3 2/5] sequencer: update `done_nr' when skipping commands in " Alban Gruin
2019-11-23 14:37     ` [PATCH v3 3/5] sequencer: move the code writing total_nr on the disk to a new function Alban Gruin
2019-11-23 14:37     ` [PATCH v3 4/5] rebase: fill `squash_onto' in get_replay_opts() Alban Gruin
2019-11-23 14:37     ` [PATCH v3 5/5] sequencer: directly call pick_commits() from complete_action() Alban Gruin
2019-11-24 17:43     ` [PATCH v4 0/5] Use complete_action's todo list to do the rebase Alban Gruin
2019-11-24 17:43       ` [PATCH v4 1/5] sequencer: update `total_nr' when adding an item to a todo list Alban Gruin
2019-11-24 17:43       ` [PATCH v4 2/5] sequencer: update `done_nr' when skipping commands in " Alban Gruin
2019-11-24 17:43       ` [PATCH v4 3/5] sequencer: move the code writing total_nr on the disk to a new function Alban Gruin
2019-11-24 17:43       ` [PATCH v4 4/5] rebase: fill `squash_onto' in get_replay_opts() Alban Gruin
2019-11-26 18:27         ` Jonathan Tan
2019-11-24 17:43       ` [PATCH v4 5/5] sequencer: directly call pick_commits() from complete_action() Alban Gruin
2019-11-26 18:41         ` Jonathan Tan
2019-11-27 19:56           ` Alban Gruin
2019-11-27 20:09             ` Alban Gruin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.1910141445250.46@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=alban.gruin@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=phillip.wood@dunelm.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.