"Squash and merge" on GitHub

Vladimir Panteleev via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 1 13:28:23 PDT 2016


GitHub rolled out a new feature:

https://github.com/blog/2141-squash-your-commits

Essentially it gives people who merge a PR the option that 
instead of creating a merge commit with one parent being "master" 
(or the target branch) and the other being a PR branch, create a 
single commit with all the commits from the PR squashed into one, 
with no merge commit.

In the context of our repos, I'm not sure it's very useful, and I 
think it should be turned off. My arguments are:

1. It makes bisecting more difficult because you can no longer 
tell which PR a commit belongs to just from the DAG.

It is still sort-of possible if you take the commit hash, paste 
it into your browser's address bar (e.g. 
https://github.com/D-Programming-Language/phobos/commit/8dc29bff62fc7c2f806e08cccc01be55923fa83b) - GitHub will add links to the pull request this commit was a part of at the top. I'm not aware of a way to do it programmatically (other than scraping the website).

2. It makes bisecting more difficult because all commits are 
squashed into one.

Clearly this option should not be used for large PRs where the 
commits are already separate self-contained changes in the first 
place. This doesn't apply when the PR author sends off a bunch of 
fixup PRs without amending/rebasing, in which case it can be 
useful.

3. It makes bisecting more difficult because it breaks Digger :) 
Although I could probably add support for such merges, I'd rather 
not :)

4. We should use the autotester's auto-merge feature anyway.

In theory the autotester could be improved to allow choosing 
which merge style to use... in theory.

5. It will create merge conflicts if the PR branch is used 
elsewhere.

Not sure if this applies to just me, but when I submit a PR to 
scratch a personal itch, I will probably use the branch locally 
too... when the PR is merged into master, updating my personal 
branch is normally painless, however this this will put a stick 
to this wheel.

As such, I propose to disable the feature completely for the core 
D-P-L repositories, so that it's unavailable to committers when 
merging PRs.



More information about the Digitalmars-d mailing list