>
> So in short: Prefer Rebase, but whenever it gets complicated: STAY WITH
> MERGES!!!
>

That's fine advice!  I think my proposal (this particular git setting) is
supportive of that since in the event of a merge conflict, at that point
you can choose what to do -- resolve simple conflicts and continue with
rebase, or abort and merge in the upstream branch, (after fixing the
conflicts).

I propose the following wording in the guideline document:

"Git: Rebase vs Merge"

Please set:   git config --global pull.rebase true

Consequently, pushing your changes will result in your changes being moved
> (rebased) on top of the latest changes to the branch you push to instead of
> a merge commit.  This keeps the history linear which is nice for simplicity
> sake in the vast majority of cases.  *However*, if there are non-trivial
> conflicts to resolve, then abort and merge into the upstream branch
> instead, which generates a merge commit.


~ David Smiley
Apache Lucene/Solr Search Developer
http://www.linkedin.com/in/davidwsmiley


On Wed, Oct 21, 2020 at 4:56 AM Uwe Schindler <u...@thetaphi.de> wrote:

> Hi,
>
>
>
> I fully agree here and yes we should have stayed with Subversion then. The
> merge commits are IMHO the best thing of Git to track if complicated merges
> were going on (one thing that never worked with Git).
>
>
>
> Not that you misunderstand me: I am fine with rebasing (when it works and
> is easy to handle) to keep history clean for simple cases, but if it does
> not work ASAP and I get a conflict during rebasing, I will stop that
> process and use the normal merge to fix the issues. In that case I will
> always keep all the history, so anybody else can see and verify if hard
> work was done to get 2 branches / commits together. This is very important
> to sort later out when errors during manual merging occurs.
>
>
>
> So in short: Prefer Rebase, but whenever it gets complicated: STAY WITH
> MERGES!!!
>
>
>
> Uwe
>
>
>
> -----
>
> Uwe Schindler
>
> Achterdiek 19, D-28357 Bremen
>
> https://www.thetaphi.de
>
> eMail: u...@thetaphi.de
>
>
>
> *From:* Robert Muir <rcm...@gmail.com>
> *Sent:* Tuesday, October 20, 2020 3:24 PM
> *To:* dev@lucene.apache.org
> *Subject:* Re: Please set: git config --global pull.rebase true
>
>
>
> if everyone wants a centralized linear history so badly, why not just go
> back to using subversion?
>
>
>
> On Mon, Oct 19, 2020 at 5:18 PM David Smiley <dsmi...@apache.org> wrote:
>
> I ask you all to do the following:
>
>
>
> git config --global pull.rebase true
>
>
>
> Perhaps you have already set it as such (this retrieves the current
> setting, possibly a default):
>
>
>
>  git config pull.rebase
>
>  -> true
>
>
>
> *What*:  As the setting implies, this has to do with what happens on a
> "pull", but in practice it shows up in a typical workflow on a "push"
> because some "pushes" need to "pull".  When pushes do a pull, it's because
> the remote branch (e.g. master or branch_8x) has advanced beyond the point
> that you had committed from.  Git will either (A) generate a merge commit
> between the latest head and your commit (the default behavior) generating a
> bifurcation in the history, or (b) it will rebase your commit(s) on top of
> the new head (what I propose) thus producing a linear history.  In either
> case, there may be a conflict which you'll have to resolve.
>
>
>
> *Why?*:  To make our history easier to understand as seen via "git log"
> and in our IDEs and online.  I don't know about you all, but I find those
> visual branch bifurcations to be a distracting annoyance that is more
> obfuscating than linear history.  I don't think that merge commits are
> altogether bad, I'd just prefer that they happen in exceptional
> circumstances instead of common ones.
>
>
>
> *Why not?:* In full disclosure, I'm aware this is one of those debates
> like tabs vs spaces.  Some will argue that the merge commit is a better
> reflection of the reality of what happened.  While I agree, it has an
> obfuscation cost on everyone looking at the history.  I think it
> _sometimes_ makes sense for a merge commit, like maybe if the branch was a
> long lived big feature.  The setting I propose does not prevent someone
> from deliberately choosing a merge commit when they consciously want one,
> it's aimed at the common scenario during a push.
>
>
>
> If I can get broad agreement here, I can update
> https://cwiki.apache.org/confluence/display/LUCENE/Commit+Process+Guidelines#CommitProcessGuidelines-LinearHistoryinGit
> to recommend the setting above and remove the [PENDING DISCUSSION].
>
>
>
> Thankfully, this appears to occur only rarely.  It happened today on
> branch_8x (I'm looking at you Eric Pugh :-) and a worse one there September
> 29th by Noble.  I say "worse" because the branch bifurcation was 2 weeks
> long for that one.
>
>
> ~ David Smiley
>
> Apache Lucene/Solr Search Developer
>
> http://www.linkedin.com/in/davidwsmiley
>
>

Reply via email to