Best practices for merging?

Tuncer Ayaz tuncer.ayaz at gmail.com
Sun Jan 31 22:58:44 UTC 2016


On 31 January 2016 at 22:01, Geoffrey Mainland wrote:
> On 01/31/2016 02:47 PM, Tuncer Ayaz wrote:
> > On 31 January 2016 at 19:24, Joachim Breitner wrote:
> > > Hi,
> > >
> > > Am Sonntag, den 31.01.2016, 13:10 -0500 schrieb Geoffrey Mainland:
> > > > My usual git workflow is to work on a feature branch, get a
> > > > nice clean set of patches, each of which implements a discrete
> > > > bit of functionality, rebase onto master, and then merge with
> > > > an empty merge commit, i..e, *not* fast-forward.
> > >
> > > if you want to go through the trouble, you are certainly welcome
> > > to do so. The fact that phab squashes commits into one is more
> > > an artifact of its VCS-agnosticity rather than a deliberate
> > > decision by us.
> > >
> > > When I want a git history (or just my nice git commit messages)
> > > preserved, I create a phab differetian revision as usual, but
> > > then manually amend the git commit to contain the line
> > > Differential Revision: https://phabricator.haskell.org/Dnnnn and
> > > push, once the DR has been accepted, by normal git means. I just
> > > have to remember to indicate in the DR (e.g. in the summary)
> > > that I want to do it this way.
> >
> > FWIW, I agree with Geoffrey, and in addition to the benefits he
> > listed, I appreciate that committing "kernel.org-style" improves
> > bisect'ability. I used to dislike merge commits myself until I
> > realized the usefulness of finding merge points in the history.
> > So, I don't understand how collapsing everything into one big
> > commit can make any sense.
> >
> > Is it really impossible to tell phabricator (or arcanist) to
> > preserve a carefully prepared patch set, and if so, why does it
> > insist on that?
>
> Not that I don't think these things are worth discussing, but to be
> clear, I was not trying to impose my preferred git workflow on GHC
> :) I was just looking for clarification, which Joachim
> provided---thanks!

I'll have to deal a lot more with Phabricator in another project soon,
and your question reminded me to figure out why this happens, etc.
Open source communication has conditioned me to discuss publicly, so I
may have hijacked the thread. Sorry.

For anybody who's curious: I actually looked this up and it seems that
Facebook decided to default to squash for cleaning up branches that
are full of fixup commits and thereby make phab not support branches
with a clean history, where each commit gets you a working state (not
some in-between broken revision). So it's to support all those devs
who do not create patch sets. There are some suggestions like setting
history.immutable in .arcconfig or invoking land with --merge. Will
try these the next time I use arc.


More information about the ghc-devs mailing list