"Squash and merge" on GitHub
Seb via Digitalmars-d
digitalmars-d at puremagic.com
Sun Aug 21 22:19:45 PDT 2016
On Saturday, 2 April 2016 at 06:02:26 UTC, Vladimir Panteleev
wrote:
> On Saturday, 2 April 2016 at 05:18:47 UTC, Andrei Alexandrescu
> wrote:
>> On 4/2/16 12:36 AM, Jack Stouffer wrote:
>>> On Saturday, 2 April 2016 at 03:58:27 UTC, Daniel Murphy
>>> wrote:
>>>> On 2/04/2016 7:28 AM, Vladimir Panteleev wrote:
>>>>>
>>>>> 4. We should use the autotester's auto-merge feature anyway.
>>>>>
>>>>
>>>> Can we disable both and force everyone to use the autotester?
>>>
>>> Yes, you can take away everyone but the auto-tester's merge
>>> rights.
>>
>> Actually that might be a good setup. We'd need an escape hatch
>> for a small circle, and control over the autotester. Also we'd
>> need to make the autotester work with all repos. -- Andrei
>
> Currently it seems that the autotester uses the committer's
> account to perform the merge (probably as an additional
> security measure that only committers can merge via the
> autotester). It would need some changes.
FYI: One can and should enable the CI pass protection for merging
(at least the auto-tester itself should be included). I have used
this for a couple of repos (libmir, dlang-tour, ...) and it makes
one sleep "safer" ;-)
(admins still have the right to merge PRs directly if really
needed).
[1]
https://help.github.com/articles/enabling-required-status-checks/
> 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.
I would like to restart the discussion as over the last months I
realized how much pain it's if (a) you are managing a PR and have
to squash your commits from time to time and thus destroy the
review history instead of just appending the commits or (b) if
you are a reviewer you always have the back-and-forth between the
submitter to explain him how to squash his PR. Especially for
newbies or people coming from other projects this can be quite
confusing.
I think this back-and-forth squash cycle is pretty annoying for
everybody, a famous example for this is the "Nazi" commit at
Phobos:
https://github.com/dlang/phobos/pull/4662
Hence I argue that we should support squashing as an option to
make our Github PR flow easier in many cases. An alternative
would be to add an option to the auto-tester to squash all
commits before merging, which would retain the additional merge
commit, but afaict this wouldn't work with CI protection enabled.
> 1. It makes bisecting more difficult because you can no longer
> tell which PR a commit belongs to just from the DAG.
The PR id is part of the commit message
> 2. It makes bisecting more difficult because all commits are
> squashed into one.
I see this as an advantage, see above.
> 4. We should use the autotester's auto-merge feature anyway.
Yep, but maybe autotester can support squashed merges as an
option.
> 5. It will create merge conflicts if the PR branch is used
> elsewhere.
That's seldom and I am not arguing that we should use squashing
all the time.
More information about the Digitalmars-d
mailing list