Best practices for merging?

Ben Gamari ben at smart-cactus.org
Mon Feb 1 13:13:34 UTC 2016


Simon Peyton Jones <simonpj at microsoft.com> writes:

> I'm no git expert here, but 
>
> * Feature branches typically have lots of intermediate fixups.
>   We don’t want that sequence in the main history; it's like
>   watching sausage being made, and many intermediate points may
>   be broken.  Better to have one big, coherent commit.
>
> * If a feature branch really has several independent pieces, then
>   yes, it'd be better to make several commits.  Perhaps Phab doesn't
>   support this well.  In that case, would it make sense to make
>   each into a separate Phab ticket?
>
> * I have no idea what an "empty merge commit" is, or why it might
>   be better that "a commit".
>  
>   After all, a fast-forward commit is no different to cloning, doing
>   a very quick job on the feature, and committing.
>
If there are multiple commits then a merge commit can serve to logically
group them. For instance, in the case of Geoff's recent fix,

    $ git log --graph --oneline origin/master
    * e5a0a89 Suppress substitution assertions to fix tests
    * a883c1b Missing @since annotations in GHC.Generics
    * f8e2b7e Minor doc fixes to GHC.Generics
    * 34519f0 When encountering a duplicate symbol, show source of the first symbol
    *   669cbef Fix Trac issue #11487.
    |\  
    | * 6544f8d Properly track live registers when saving the CCCS.
    | * 90f688e Code formatting cleanup.
    | * 4d0e4fe Add type signatures.
    |/  
    * b61f5f7 Put docs in /usr/share/doc/ghc-<version>

Here we see that those three commits were developed on a feature branch,
which was then merged into master in 669cbef.

For what it's worth I quite like this practice. That being said, in GHC
we rarely have changes broken up into multiple commits like this, in
part due to Phab's poor support for fine-grained changes.

Cheers,

- Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160201/53c771ad/attachment.sig>


More information about the ghc-devs mailing list