Re: Pick the right default and stop warn on `git pull`
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Nov 26, 2020, 01:02 UTC
- Message-ID
- <CAMP44s0M00sBvdjD0jc0X=1=PJepC5fNndw73sceOpbDCw5dFQ@mail.gmail.com>
- In-Reply-To
- <xmqq7dqagtgx.fsf@gitster.c.googlers.com>
On Tue, Nov 24, 2020 at 6:39 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> > Alex Henrie <alexhenrie24@gmail.com> writes: > > > We'd only need a warning if both pull.ff and pull.rebase are unset, > > since that's the only situation where the behavior would change. And > > providentially, we already have a warning in that exact case, although > > we should probably tweak it to explain what the new behavior is going > > to be :-) > > If we were starting "git pull" from scratch without any existing > configuration and command line options, pull.mode might present a > simpler end user experience, but I have to say that pull.ff and > pull.rebase that are fairly well ingrained in docs and users' minds, > the above plan sounds like a better option to reduce the cognitive > overhead for users.
Is it? From forums, blogs, and answers in Stack Overflow what I mostly see is "do not do git pull".
Show 10 quoted lines
> >> And yes, it should be possible to do what you suggest, but have you > >> tried? I suspect both the code and the documentation would be quite > >> convoluted. > > > > Yes, I have written a very simple patch that implements the behavior > > that I am suggesting. I will send it to the mailing list later > > tonight. > > Let's see how well the comparison between two approaches play out. > Thanks.
I tried to remove pull.mode from my patch series, and it mostly works, except if you:
1. Have "pull.ff=only" 2. Do a "git pull --no-rebase"
When you have "pull.mode=ff-only", doing "git pull --no-rebase" ("git pull --merge") that mode is overridden, and the merge succeeds.
If you have "pull.ff=only", you would have to do "git pull --no-rebase --no-ff" for the merge to succeed, which I don't think should be the default.
We could change the semantics of "pull.ff=only", but that would break existing behavior, and it starts to get convoluted.
Cheers.
-- Felipe Contreras