git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Elijah Newren <newren@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>,
	Junio C Hamano <gitster@pobox.com>,
	Pratik Karki <predatoramigo@gmail.com>,
	Phillip Wood <phillip.wood@talktalk.net>
Subject: Re: [PATCH v4 5/8] git-rebase, sequencer: extend --quiet option for the interactive machinery
Date: Mon, 21 Jan 2019 19:19:36 +0100 (STD)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.1901211916400.41@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <CABPp-BFrgjW-c8NKGYKs1VaH--Oc8yUu0enQMSp1pQVUwBOBwA@mail.gmail.com>

Hi Elijah,

On Mon, 21 Jan 2019, Elijah Newren wrote:

> On Mon, Jan 21, 2019 at 8:10 AM Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> >
> > On Tue, 11 Dec 2018, Elijah Newren wrote:
> >
> > > While 'quiet' and 'interactive' may sound like antonyms, the interactive
> > > machinery actually has logic that implements several
> > > interactive_rebase=implied cases (--exec, --keep-empty, --rebase-merges)
> > > which won't pop up an editor.  The rewrite of interactive rebase in C
> > > added a quiet option, though it only turns stats off.  Since we want to
> > > make the interactive machinery also take over for git-rebase--merge, it
> > > should fully implement the --quiet option.
> > >
> > > git-rebase--interactive was already somewhat quieter than
> > > git-rebase--merge and git-rebase--am, possibly because cherry-pick has
> > > just traditionally been quieter.  As such, we only drop a few
> > > informational messages -- "Rebasing (n/m)" and "Successfully rebased..."
> > >
> > > Also, for simplicity, remove the differences in how quiet and verbose
> > > options were recorded.  Having one be signalled by the presence of a
> > > "verbose" file in the state_dir, while the other was signalled by the
> > > contents of a "quiet" file was just weirdly inconsistent.  (This
> > > inconsistency pre-dated the rewrite into C.)  Make them consistent by
> > > having them both key off the presence of the file.
> > >
> > > Signed-off-by: Elijah Newren <newren@gmail.com>
> >
> > This is convincing. I would like to point out, though...
> >
> > > ---
> > >  builtin/rebase.c      |  5 +----
> > >  git-legacy-rebase.sh  |  2 +-
> > >  git-rebase--common.sh |  2 +-
> > >  sequencer.c           | 23 +++++++++++++----------
> > >  sequencer.h           |  1 +
> > >  5 files changed, 17 insertions(+), 16 deletions(-)
> > >
> > > diff --git a/builtin/rebase.c b/builtin/rebase.c
> > > index 78e982298f..ec2e5fbf23 100644
> > > --- a/builtin/rebase.c
> > > +++ b/builtin/rebase.c
> > > @@ -185,10 +185,7 @@ static int read_basic_state(struct rebase_options *opts)
> > >       if (get_oid(buf.buf, &opts->orig_head))
> > >               return error(_("invalid orig-head: '%s'"), buf.buf);
> > >
> > > -     strbuf_reset(&buf);
> > > -     if (read_one(state_dir_path("quiet", opts), &buf))
> > > -             return -1;
> > > -     if (buf.len)
> > > +     if (file_exists(state_dir_path("quiet", opts)))
> >
> > This changes the behavior. AFAIR the `quiet` file was always written, but
> > contained `t` in quiet mode. I have to interrupt my review here, and will
> > continue later, but maybe you will beat me to looking into that.
> >
> > Ciao,
> > Dscho
> 
> You are certainly consistent;

You flatter me!

> you commented on this exact same issue in both v1 and v2 (you didn't
> have time to review v3). In v2, your comment was[1]:
> 
> "
> I am slightly concerned that some creative power user could have written
> scripts that rely on this behavior.
> 
> But only *slightly* concerned.
> 
> The patch looks correct.
> "
> 
> Also, I have a fuzzy memory of discussing a very similar case with
> some rebase-oriented option and its on-disk representation, where the
> concern was more about users upgrading git versions during an
> incomplete rebase rather than power users looking at internal file
> contents.  And I think either Phillip or Junio made some statement
> about considering these internal details and that they felt the worry
> about upgrade mid-rebase was overly worrying.  But I can't find the
> emails right now, and it's been so long (at least half a year) that I
> might be imagining things.

Indeed, it was one of Phillip's patch series that fixed an incorrect
quoting in the author script. And we eventually all agreed that it would
not be worth the trouble to take care of upgrade-spanning rebases (both
Phillip and I spent some time to make it so, IIRC).

> But from first principles, in this case even if you're worried about
> power users reaching into internal files of rebase or about users
> upgrade mid-rebase, at *worst* people will get or lose a few fluffy
> progress-update messages.  To me, that's an innocuous level of change
> that's certainly worth the risk to allow us to get rid of the annoying
> differences in implementation of handling of different options.  But,
> if you strongly feel that's too big a risk, we can remove the part of
> the patch making verbose and quiet be handled consistently; it's not
> critical to the rest of the series.  I just thought it was a good
> cleanup while I was touching the area.

I think you are correct. It is much easier in C to check whether a file
exists than to read it, parse it and determine whether its Boolean value
should be `false` or `true`.

So color me convinced that your clean-up is worth it. Maybe, just maybe,
if you submit another iteration (and only if), could you add a little
paragraph for future Dscho to understand that this clean-up was slipped
in?

Thanks,
Dscho

  reply	other threads:[~2019-01-21 18:20 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-08  6:01 [PATCH v2 0/2] Reimplement rebase --merge via interactive machinery Elijah Newren
2018-11-08  6:01 ` [PATCH v2 1/2] git-rebase, sequencer: extend --quiet option for the " Elijah Newren
2018-11-12 15:11   ` Johannes Schindelin
2018-11-08  6:01 ` [PATCH v2 2/2] rebase: Implement --merge via git-rebase--interactive Elijah Newren
2018-11-12 16:21   ` Johannes Schindelin
2018-11-12 18:21     ` Phillip Wood
2018-11-13  9:18       ` Johannes Schindelin
2018-11-14 23:06       ` Elijah Newren
2018-11-13 16:06     ` Elijah Newren
2018-11-14 23:03     ` Elijah Newren
2018-11-15 12:27       ` Johannes Schindelin
2018-11-08  6:33 ` [PATCH v2 0/2] Reimplement rebase --merge via interactive machinery Elijah Newren
2018-11-22  4:48 ` [PATCH v3 0/7] " Elijah Newren
2018-11-22  4:48   ` [PATCH v3 1/7] rebase: fix incompatible options error message Elijah Newren
2018-11-28  8:28     ` Johannes Schindelin
2018-11-28 15:58       ` Elijah Newren
2018-11-28 16:12     ` Duy Nguyen
2018-11-28 16:31       ` Elijah Newren
2018-11-22  4:48   ` [PATCH v3 2/7] t5407: add a test demonstrating how interactive handles --skip differently Elijah Newren
2018-11-22  4:48   ` [PATCH v3 3/7] am, rebase--merge: do not overlook --skip'ed commits with post-rewrite Elijah Newren
2018-11-22  4:48   ` [PATCH v3 4/7] git-rebase, sequencer: extend --quiet option for the interactive machinery Elijah Newren
2018-11-22  4:48   ` [PATCH v3 5/7] git-legacy-rebase: simplify unnecessary triply-nested if Elijah Newren
2018-11-22  4:48   ` [PATCH v3 6/7] rebase: define linearization ordering and enforce it Elijah Newren
2018-11-22  4:48   ` [PATCH v3 7/7] rebase: Implement --merge via the interactive machinery Elijah Newren
2018-12-11 16:11   ` [PATCH v4 0/8] Reimplement rebase --merge via " Elijah Newren
2018-12-11 16:11     ` [PATCH v4 1/8] rebase: make builtin and legacy script error messages the same Elijah Newren
2018-12-11 16:11     ` [PATCH v4 2/8] rebase: fix incompatible options error message Elijah Newren
2018-12-11 16:11     ` [PATCH v4 3/8] t5407: add a test demonstrating how interactive handles --skip differently Elijah Newren
2018-12-11 16:11     ` [PATCH v4 4/8] am, rebase--merge: do not overlook --skip'ed commits with post-rewrite Elijah Newren
2019-01-21 16:07       ` Johannes Schindelin
2019-01-21 17:59         ` Elijah Newren
2019-01-21 18:11           ` Johannes Schindelin
2018-12-11 16:11     ` [PATCH v4 5/8] git-rebase, sequencer: extend --quiet option for the interactive machinery Elijah Newren
2019-01-21 16:10       ` Johannes Schindelin
2019-01-21 17:50         ` Elijah Newren
2019-01-21 18:19           ` Johannes Schindelin [this message]
2019-01-21 18:22             ` Johannes Schindelin
2019-01-22 20:39           ` Junio C Hamano
2019-02-20 11:00             ` Phillip Wood
2019-02-21 17:44               ` Elijah Newren
2018-12-11 16:11     ` [PATCH v4 6/8] git-legacy-rebase: simplify unnecessary triply-nested if Elijah Newren
2018-12-11 16:11     ` [PATCH v4 7/8] rebase: define linearization ordering and enforce it Elijah Newren
2018-12-11 16:11     ` [PATCH v4 8/8] rebase: Implement --merge via the interactive machinery Elijah Newren
2019-01-07 17:15     ` [PATCH v4 0/8] Reimplement rebase --merge via " Elijah Newren
2019-01-07 19:46       ` Junio C Hamano
2019-01-07 20:11         ` Junio C Hamano
2019-01-07 20:39           ` Elijah Newren
2019-01-11 18:36             ` Elijah Newren
2019-01-18 13:36             ` Johannes Schindelin
2019-01-18 14:22               ` Johannes Schindelin
2019-01-18 17:55                 ` Junio C Hamano
2019-01-18 18:07                   ` Elijah Newren
2019-01-18 21:03                   ` Johannes Schindelin
2019-01-18 21:21                     ` Junio C Hamano
2019-01-21 21:02                       ` Johannes Schindelin
2019-01-21 16:03     ` Johannes Schindelin
2019-01-21 21:01       ` Johannes Schindelin
2019-01-21 21:04         ` Elijah Newren
2019-01-29  1:39     ` [PATCH v5 " Elijah Newren
2019-01-29  1:39       ` [PATCH v5 1/8] rebase: make builtin and legacy script error messages the same Elijah Newren
2019-01-29  1:39       ` [PATCH v5 2/8] rebase: fix incompatible options error message Elijah Newren
2019-01-29  1:39       ` [PATCH v5 3/8] t5407: add a test demonstrating how interactive handles --skip differently Elijah Newren
2019-01-29  1:39       ` [PATCH v5 4/8] am, rebase--merge: do not overlook --skip'ed commits with post-rewrite Elijah Newren
2019-01-29  1:39       ` [PATCH v5 5/8] git-rebase, sequencer: extend --quiet option for the interactive machinery Elijah Newren
2019-01-29  1:39       ` [PATCH v5 6/8] git-legacy-rebase: simplify unnecessary triply-nested if Elijah Newren
2019-01-29  1:39       ` [PATCH v5 7/8] rebase: define linearization ordering and enforce it Elijah Newren
2019-01-29  1:39       ` [PATCH v5 8/8] rebase: implement --merge via the interactive machinery Elijah Newren

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.1901211916400.41@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=newren@gmail.com \
    --cc=phillip.wood@talktalk.net \
    --cc=predatoramigo@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).