From: Felipe Contreras <felipe.contreras@gmail.com>
To: Junio C Hamano <gitster@pobox.com>,
Felipe Contreras <felipe.contreras@gmail.com>
Cc: "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>,
"Jeff King" <peff@peff.net>,
"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 16:30:20 -0600 [thread overview]
Message-ID: <5fd7e77c78e06_d59852083e@natae.notmuch> (raw)
In-Reply-To: <xmqqh7ooje03.fsf@gitster.c.googlers.com>
Junio C Hamano wrote:
> Felipe Contreras <felipe.contreras@gmail.com> writes:
>
> > This is irrelevant.
>
> Oh, now you are saying that you do not need a way to squelch these
> message to help unconfigured users choose between rebase or merge?
> I am confused.
We need a way to squelch the *advise* message, yes.
But this is a secondary priority. The first priority is not to break
current behavior users rely on.
> > As long as it's an error I don't care if it's short or long. I'm
> > against turning on an error from one version to the next.
>
> Now you are changing your mind? Current version and past ones do
> not make it an error to pull non-ff history without choosing rebase
> or merge---we go ahead and merge anyway. I thought that in the far
> future agreed between two of us, it would be turnend into an error
> at some point. There needs one version that turns it into an error
> for that to happen. Puzzled.
Yes, in the future, *after* a deprecation period.
Once the users have had a chance to configure git to do what they want,
have tried the new mode, haven't had issues with the new mode, or if
they disagree with the proposed *future* behavior; complain in the
forums at their disposal.
Not before.
> >> I too initially thought that pull.mode may be needed, but probably I
> >> was wrong. I do think this can be done without pull.mode at all, at
> >> least in two ways, without adding different ways to do the same
> >> thing.
> >>
> >> - When pull.rebase is set to 'no' and pull.ff is set to 'only',
> >> "git pull" that sees a non-ff history should error out safely.
> >> The user is telling that their preference is to merge, but the
> >> difference between merge and rebase does not really matter
> >> because pull.ff=only would mean we forbid merges of non-ff
> >> history anyway. The message you'd get would be "fatal: Not
> >> possible to fast-forward, aborting." though.
> >>
> >> - Or with the advice that hides the latter two points, a user can
> >> unset pull.rebase and set the advice.pullNonFF to false to get
> >> the same behaviour (i.e. disable the more dangerous half of
> >> "pull") with just the "we stopped" error message.
> >
> > So, after your hypothetical patch, there would be no difference between:
> >
> > git -c pull.rebase=no -c pull.ff=only pull
> >
> > and:
> >
> > git -c advice.pullnonff=false pull
> >
> > ?
>
> We do not have to or implement both, but either should give us the
> "when pull sees a non-ff history, it should stop without merging or
> rebasing, and the user won't be given the advice on how to choose
> between merge and rebase" behaviour, I would think.
Right, so both should error out.
And what should these do?
git -c pull.rebase=no -c pull.ff=only pull --merge
git -c advice.pullnonff=false pull --merge
I'm going to answer because I think it's obvious what you would expect:
if you pass --merge, both should succeed.
Except they won't, because "git pull --ff-only --merge" fails.
Correct?
> >> I think either of these are close enough to what you want, and I
> >> think the latter gives us more flexibility in how we tone down the
> >> message with advice.pullNonFF.
> >
> > You are missing at least two things.
>
> I am guessing that the '?' above I just answered is one you wanted
> to ask me, but what's the other one?
Yes. The other is what I explained above; we need a grace deprecation
period where we can explain to the user in a simple way what to expect
in the future.
And it's much easier to explain to the user that:
git pull --merge -> pull.mode = merge
git pull --rebase -> pull.mode = rebase
git pull -> pull.mode = fast-forward
Than:
git pull --merge -> pull.rebase = false
git pull --rebase -> pull.rebase = true
git pull -> pull.rebase = false + pull.ff = only
But those are not the only two. For example there's this additional
problem of how to interact with the other values of pull.rebase (other
than true and false):
pull.mode = merge
pull.rebase = merges
I would expect in this particular configuration that:
git pull -> git pull --merge
git pull --rebase -> git pull --rebase=merges
There's no way to represent that with just pull.rebase.
And there's more: some people suggested other modes in 2013, like
"pull.mode=none" (essentially "git fetch"), or
"pull.mode=merge-reverse-parents".
But the first one should be enough ("git pull --ff-only --merge" doesn't
work).
Cheers.
--
Felipe Contreras
next prev parent reply other threads:[~2020-12-14 22:31 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 [this message]
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
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=5fd7e77c78e06_d59852083e@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).