SGTM then, my new vote is +1 to (a) as it preserves the most information,
just the reviewer need to keep in mind to tell the author to squash the
noise commit before merge.

On Wed, Nov 29, 2017 at 12:09 PM Kenneth Knowles <k...@google.com> wrote:

> Let's assume that when I say (a) the author has arranged commits to be
> meaningful. That's what I meant to say in each of my descriptions of the
> option. If they are noise, it doesn't apply.
>
> On Tue, Nov 28, 2017 at 8:04 PM, James <xumingmi...@gmail.com> wrote:
>
>> Thanks Kenn for bring up this expanded discussion, my vote is:
>>
>> (a) -1 this preserves noise log like 'fix review comments'
>> (b) +0 this keeps the commit log clean, but without a rebase
>> (c) -1 similar to option a), it preserves noise log like 'fix review
>> comments'
>>
>> My ideal option is the current manual merge process: `rebase + squash`,
>> maybe we should consider introducing mergebot?
>>
>>
>> On Wed, Nov 29, 2017 at 4:01 AM Raghu Angadi <rang...@google.com> wrote:
>>
>>> On Tue, Nov 28, 2017 at 11:47 AM, Thomas Weise <t...@apache.org> wrote:
>>>
>>>>
>>>> (a) -0 due to extra noise in the commit log
>>>>
>>>
>>>
>>>> (b) -1 (as standard/default) this should be done by contributor as
>>>> there may be few situation where individual commits should be preserved
>>>>
>>>
>>> It is better to preserve the commit history of the PR at least in the
>>> committer branch (and PR).
>>> In addition having to force push squashed commit to remote git branch
>>> each time is quite painful. If we squash at all, final merge into master
>>> seems like the best place.
>>>
>>>
>>>> (c) +1 the rebase will also record the committer (which would be merge
>>>> commit author otherwise)
>>>>
>>>> In general the process should result in "merged" status for a merged PR
>>>> as opposed to "closed" as seen often currently.
>>>>
>>>> Thanks,
>>>> Thomas
>>>>
>>>>
>>>>
>>>> On Tue, Nov 28, 2017 at 11:23 AM, Kenneth Knowles <k...@google.com>
>>>> wrote:
>>>>
>>>>> On Tue, Nov 28, 2017 at 11:16 AM, Raghu Angadi <rang...@google.com>
>>>>> wrote:
>>>>>
>>>>>> -1 for (a): no need to see all the private branch commits from
>>>>>> contributor. It often makes me more conscious of local commits.
>>>>>>
>>>>>
>>>>> I want to note that on my PRs these are not private commits. Each one
>>>>> is a meaningful isolated change that can be rolled back and is useful to
>>>>> keep separate when looking at `git blame` or the history of a file. I 
>>>>> would
>>>>> encourage every contributor to also do this. A PR is the unit of code
>>>>> review, but the unit of meaningful change to a repository is often much
>>>>> smaller.
>>>>>
>>>>> Kenn
>>>>>
>>>>>
>>>>>> +1 for (b): with committer replacing the squashed commit messages
>>>>>> with '[BEAM-jira or PRID]: Brief cut-n-paste (or longer if it contributor
>>>>>> provided one)'.
>>>>>> -1 for (c): This is quite painful for contributors to work with if
>>>>>> there has been merge conflict with master. Especially for larger PRs with
>>>>>> multiple updates.
>>>>>>
>>>>>> On Tue, Nov 28, 2017 at 10:24 AM, Lukasz Cwik <lc...@google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Is it possible for mergebot to auto squash any fixup! and perform
>>>>>>> the merge commit as described in (a), if so then I would vote for 
>>>>>>> mergebot.
>>>>>>>
>>>>>>> Without mergebot, I vote:
>>>>>>> (a) 0 I like squashing fixup!
>>>>>>> (b) -1
>>>>>>> (c) +1 Most of our PRs are for focused singular changes which is why
>>>>>>> I would rather squash everything over not squashing anything
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Nov 28, 2017 at 9:57 AM, Kenneth Knowles <k...@google.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Tue, Nov 28, 2017 at 9:51 AM, Ben Chambers <bchamb...@google.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> One risk to "squash and merge" is that it may lead to commits that
>>>>>>>>> don't have clean descriptions -- for instance, commits like "Fixing 
>>>>>>>>> review
>>>>>>>>> comments" will show up. If we use (a) these would also show up as 
>>>>>>>>> separate
>>>>>>>>> commits. It seems like there are two cases of multiple commits in a 
>>>>>>>>> PR:
>>>>>>>>>
>>>>>>>>> 1. Multiple commits in a PR that have semantic meaning (eg., a PR
>>>>>>>>> performed N steps, split across N commits). In this case, keeping the
>>>>>>>>> descriptions and performing either a merge (if the commits are 
>>>>>>>>> separately
>>>>>>>>> valid) or squash (if we want the commits to become a single commit in
>>>>>>>>> master) probably makes sense.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Keep 'em
>>>>>>>>
>>>>>>>>
>>>>>>>>> 2. Multiple commits in a PR that just reflect the review history.
>>>>>>>>> In this case, we should probably ask the PR author to explicitly 
>>>>>>>>> rebase
>>>>>>>>> their PR to have semantically meaningful commits prior to merging. 
>>>>>>>>> (Eg., do
>>>>>>>>> a rebase -i).
>>>>>>>>>
>>>>>>>>
>>>>>>>> Ask the author to squash 'em.
>>>>>>>>
>>>>>>>> Kenn
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Nov 28, 2017 at 9:46 AM Kenneth Knowles <k...@google.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi all,
>>>>>>>>>>
>>>>>>>>>> James brought up a great question in Slack, which was how should
>>>>>>>>>> we use the merge button, illustrated [1]
>>>>>>>>>>
>>>>>>>>>> I want to broaden the discussion to talk about all the new
>>>>>>>>>> capabilities:
>>>>>>>>>>
>>>>>>>>>> 1. Whether & how to use the "reviewer" field
>>>>>>>>>> 2. Whether & how to use the "assignee" field
>>>>>>>>>> 3. Whether & how to use the merge button
>>>>>>>>>>
>>>>>>>>>> My preferences are:
>>>>>>>>>>
>>>>>>>>>> 1. Use the reviewer field instead of "R:" comments.
>>>>>>>>>> 2. Use the assignee field to keep track of who the review is
>>>>>>>>>> blocked on (either the reviewer for more comments or the author for 
>>>>>>>>>> fixes)
>>>>>>>>>> 3. Use merge commits, but editing the commit subject line
>>>>>>>>>>
>>>>>>>>>> To expand on part 3, GitHub's merge button has three options [1].
>>>>>>>>>> They are not described accurately in the UI, as they all say "merge" 
>>>>>>>>>> when
>>>>>>>>>> only one of them performs a merge. They do the following:
>>>>>>>>>>
>>>>>>>>>> (a) Merge the branch with a merge commit
>>>>>>>>>> (b) Squash all the commits, rebase and push
>>>>>>>>>> (c) Rebase and push without squash
>>>>>>>>>>
>>>>>>>>>> Unlike our current guide, all of these result in a "merged"
>>>>>>>>>> status for the PR, so we can correctly distinguish those PRs that 
>>>>>>>>>> were
>>>>>>>>>> actually merged.
>>>>>>>>>>
>>>>>>>>>> My votes on these options are:
>>>>>>>>>>
>>>>>>>>>> (a) +1 this preserves the most information
>>>>>>>>>> (b) -1 this erases the most information
>>>>>>>>>> (c) -0 this is just sort of a middle ground; it breaks commit
>>>>>>>>>> hashes, does not have a clear merge commit, but preserves other info
>>>>>>>>>>
>>>>>>>>>> Kenn
>>>>>>>>>>
>>>>>>>>>> [1] https://apachebeam.slack.com/messages/C1AAFJYMP/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Kenn
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>

Reply via email to