From: Felipe Contreras <felipe.contreras@gmail.com>
To: Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>
Cc: "Felipe Contreras" <felipe.contreras@gmail.com>,
"Elijah Newren" <newren@gmail.com>,
"Jacob Keller" <jacob.keller@gmail.com>,
"Git Mailing List" <git@vger.kernel.org>,
"Vít Ondruch" <vondruch@redhat.com>,
"Alex Henrie" <alexhenrie24@gmail.com>,
"Philip Oakley" <philipoakley@iee.email>,
"Theodore Y . Ts'o" <tytso@mit.edu>,
"John Keeping" <john@keeping.me.uk>,
"Richard Hansen" <rhansen@rhansen.org>,
"Brian M. Carlson" <sandals@crustytoothpaste.net>,
"W. Trevor King" <wking@tremily.us>
Subject: Re: [PATCH v2 02/14] pull: improve default warning
Date: Mon, 14 Dec 2020 21:49:33 -0600 [thread overview]
Message-ID: <5fd8324d70ae5_d7c48208fa@natae.notmuch> (raw)
In-Reply-To: <X9ggAxk/z0D9Qom+@coredump.intra.peff.net>
Jeff King wrote:
> On Thu, Dec 10, 2020 at 11:17:01PM -0800, Junio C Hamano wrote:
>
> > You want to let the user express: "I do not want to choose either
> > rebase or merge. I want 'pull' to fail when it needs to deal with
> > non-ff history. But I do not need to be told about command line
> > option and configuration every time."
> >
> > I said I don't (I view that disabling half the "git pull" just a
> > safe fallback behaviour until the user chooses between merge and
> > rebase), but if we wanted to offer it as a valid choice to users, we
> > can do so. We just make it possible to squelch the latter two parts
> > of the three-part message---you leave pull.rebase unconfigured and
> > squelch the latter two parts of the message, and you got the "stop
> > me, I do not merge or rebase, but don't even tell me how to further
> > configure" already.
>
> FWIW, I would be such a user who would want to squelch the error but
> keep the ff-only behavior (and have been doing so for years via
> pull.ff=only).
If you have configured pull.ff=only, you should be getting this error:
Not possible to fast-forward, aborting.
We would like this error instead:
Not a fast-forward, either merge or rebase.
And after that it should be obvious what this command should do with
your current configuration:
git pull --merge
But it would fail, even after specifying you want to do a merge, because
"git pull --ff-only --merge" fails.
> So I think this is a valuable thing to have. And it does work just fine
> already, without pull.mode. The reasons to care about pull.mode (IMHO)
> are mostly about explaining it:
>
> - it isn't respected with rebase. So if you set pull.rebase=true, now
> pull.ff=only does nothing. This is arguably confusing, though I
> doubt it comes up much in practice.
>
> - having a single tri-state of merge/rebase/error for "what do I do
> when pulling a non-fast-forward merge" is conceptually simple and
> easy to explain.
Indeed. It's *mostly* about explaining it, but there's also what I
stated above:
git -c pull.mode=fast-forward pull
git -c pull.mode=fast-forward pull --merge
We want the first one to fail, and the second one to succeed, which
can't be done with the current "pull.ff=only".
> So I like pull.mode in that sense. But it is also weighed against the
> fact that we'd still have to support pull.rebase, and we'd still have to
> support pull.ff, and explain how those interact with pull.mode (and I
> think any new error in this area must be squelched by those existing
> variables, or it would be a regression for people who already picked
> their default long ago).
The interactions should be easy:
* pull.rebase=false -> pull.mode=merge
* pull.rebase=the-rest -> pull.mode=rebase
* pull.ff=only -> pull.mode=fast-forward
(note: I'm not entirely sure of the last one)
Then, any --merge/--rebase option overrides the mode, but not so the
--ff options.
We would still like this to fail:
git -c pull.mode=merge pull --ff-only
Right?
In other words: pull.mode is strongly linked with pull.rebase, but not so
much wih --ff*.
> > But there is an established way used in this project when we allow
> > squelching overly-helpful help messages, and we can apply it here as
> > well. That way:
> >
> > - unconfigured folks would get all the three parts of the messages,
> > just like the current system.
> >
> > - if you tell rebase or merge, you do not see any.
> >
> > - if you do not choose between rebase or merge, you can still
> > squelch the latter two by setting advice.pullNonFF to false.
> >
> > The last one is "keep the more dangerous half of 'git pull' disabled,
> > without getting told how to enable it over and over", which is what
> > you want to be able to specify.
>
> Using advice.* to squelch the advice would be fine with me, provided it
> was _also_ squelched by the existing config options.
>
> Which I think is where your thinking is ending up.
Yes. At least that's my thinking.
Cheers.
--
Felipe Contreras
next prev parent reply other threads:[~2020-12-15 3:50 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-04 6:16 [PATCH v2 00/14] pull: default warning improvements Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 01/14] doc: pull: explain what is a fast-forward Felipe Contreras
2020-12-04 22:55 ` Elijah Newren
2020-12-05 1:21 ` Jacob Keller
2020-12-04 6:16 ` [PATCH v2 02/14] pull: improve default warning Felipe Contreras
2020-12-04 22:59 ` Elijah Newren
2020-12-05 0:12 ` Felipe Contreras
2020-12-05 0:56 ` Elijah Newren
2020-12-05 1:56 ` Felipe Contreras
2020-12-05 9:23 ` Chris Torek
2020-12-05 11:47 ` Felipe Contreras
2020-12-05 16:28 ` Elijah Newren
2020-12-05 21:27 ` Felipe Contreras
2020-12-06 1:01 ` Elijah Newren
2020-12-06 14:31 ` Felipe Contreras
2020-12-07 7:26 ` Junio C Hamano
2020-12-07 9:16 ` Felipe Contreras
2020-12-07 18:16 ` Junio C Hamano
2020-12-07 19:09 ` Felipe Contreras
2020-12-07 19:53 ` Junio C Hamano
2020-12-07 22:14 ` Felipe Contreras
2020-12-07 23:30 ` Jacob Keller
2020-12-08 2:23 ` Junio C Hamano
2020-12-08 3:15 ` Felipe Contreras
2020-12-08 20:16 ` Junio C Hamano
2020-12-09 9:52 ` Felipe Contreras
2020-12-09 19:05 ` Elijah Newren
2020-12-10 2:39 ` Felipe Contreras
2020-12-10 6:45 ` Junio C Hamano
2020-12-10 9:08 ` Felipe Contreras
2020-12-10 10:01 ` Felipe Contreras
2020-12-11 7:17 ` Junio C Hamano
2020-12-11 11:33 ` Felipe Contreras
2020-12-14 21:04 ` Junio C Hamano
2020-12-14 22:30 ` Felipe Contreras
2020-12-14 23:14 ` Junio C Hamano
2020-12-15 2:36 ` Felipe Contreras
2020-12-15 2:31 ` Jeff King
2020-12-15 3:49 ` Felipe Contreras [this message]
2020-12-15 11:18 ` Junio C Hamano
2020-12-15 12:53 ` Felipe Contreras
2020-12-07 9:23 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 03/14] pull: refactor fast-forward check Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 04/14] pull: cleanup autostash check Felipe Contreras
2020-12-04 23:07 ` Elijah Newren
2020-12-05 0:47 ` Felipe Contreras
2020-12-05 0:57 ` Elijah Newren
2020-12-04 6:16 ` [PATCH v2 05/14] pull: trivial cleanup Felipe Contreras
2020-12-04 23:09 ` Elijah Newren
2020-12-05 0:48 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 06/14] pull: move default warning Felipe Contreras
2020-12-04 23:18 ` Elijah Newren
2020-12-04 23:36 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 07/14] pull: display default warning only when non-ff Felipe Contreras
2020-12-04 23:24 ` Elijah Newren
2020-12-05 1:03 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 08/14] pull: trivial whitespace style fix Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 09/14] pull: introduce --merge option Felipe Contreras
2020-12-04 23:27 ` Elijah Newren
2020-12-05 1:06 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 10/14] pull: add proper error with --ff-only Felipe Contreras
2020-12-04 23:34 ` Elijah Newren
2020-12-05 1:18 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 11/14] tentative: pull: change the semantics of --ff-only Felipe Contreras
2020-12-04 23:39 ` Elijah Newren
2020-12-05 4:01 ` Felipe Contreras
2020-12-05 4:06 ` [PATCH] experiment: pull: change --ff-only and default mode Felipe Contreras
2020-12-05 17:29 ` Elijah Newren
2020-12-05 18:16 ` Felipe Contreras
2020-12-07 7:34 ` Junio C Hamano
2020-12-05 11:37 ` [PATCH v2 11/14] tentative: pull: change the semantics of --ff-only Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 12/14] pull: show warning with --ff Felipe Contreras
2020-12-04 23:41 ` Elijah Newren
2020-12-05 1:25 ` Felipe Contreras
2020-12-04 6:16 ` [PATCH v2 13/14] test: merge-pull-config: trivial cleanup Felipe Contreras
2020-12-04 23:41 ` Elijah Newren
2020-12-04 6:16 ` [PATCH v2 14/14] test: pull-options: revert unnecessary changes Felipe Contreras
2020-12-04 23:49 ` Elijah Newren
2020-12-05 1:28 ` Felipe Contreras
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=5fd8324d70ae5_d7c48208fa@natae.notmuch \
--to=felipe.contreras@gmail.com \
--cc=alexhenrie24@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jacob.keller@gmail.com \
--cc=john@keeping.me.uk \
--cc=newren@gmail.com \
--cc=peff@peff.net \
--cc=philipoakley@iee.email \
--cc=rhansen@rhansen.org \
--cc=sandals@crustytoothpaste.net \
--cc=tytso@mit.edu \
--cc=vondruch@redhat.com \
--cc=wking@tremily.us \
/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).