I agree with the cleanliness of the Commit history.
"Fixup!", "Address comments", "Address even more comments" type of comments
does not convey meaningful information and are not very useful. Its a good
idea to squash them.
However, I think its ok to keep separate commits for different logical
pieces of the code which make reviewing and revisiting code easier.
Example PR: Support X in the pipeline
Commit 1: Restructuring a bunch of code without any logical change.
Commit 2: Changing validation logic for pipeline.
Commit 3: Supporting new field "X" for pipeline.

On Wed, Sep 19, 2018 at 11:27 AM Charles Chen <c...@google.com> wrote:

> To be concrete, it is very easy to revert a commit in any case:
>
>    1. First, use "git log --first-parent" to find the first-parent commit
>    corresponding to a PR merge (this is a one-to-one correspondence).
>    2. Use "git revert -m 1 <commitid>" to revert the commit; this selects
>    the first parent as the base for a merge commit (in the case where a single
>    commit needs to be reverted, just use "git revert <commitid>" without the
>    "-m 1" flag).
>
> In any case, as a general good engineering practice, I do agree that it is
> highly desirable to have small independent PRs instead of large jumbo PRs
> whenever possible.
>
> On Wed, Sep 19, 2018 at 11:20 AM Charles Chen <c...@google.com> wrote:
>
>> I don't think it's actually harder to roll back a set of commits that are
>> merged together.  Git has the notion of first-parent commits (you can see,
>> for example, "git log --first-parent", which filters out the intermediate
>> commits).  In this sense, PRs still get merged as one unit and this is
>> preserved even if intermediate commits are kept.  Perhaps the bigger issue
>> is that we need better documentation and a playbook on how to do this these
>> common tasks in git.
>>
>> On Wed, Sep 19, 2018 at 9:27 AM Thomas Weise <t...@apache.org> wrote:
>>
>>> Wanted to bring this up as reminder as well as opportunity to discuss
>>> potential changes to our committer guide. It has been a while since last
>>> related discussion and we welcomed several new committers since then.
>>>
>>> Finishing up pull requests pre-merge:
>>>
>>> https://beam.apache.org/contribute/committer-guide/#finishing-touches
>>>
>>> PRs are worked on over time and may accumulate many commits. Sometimes
>>> because scope expands, sometimes just to separate independent changes but
>>> most of the time the commits are just fixups that are added as review
>>> progresses.
>>>
>>> It is important that the latter get squashed prior to PR merge, as
>>> otherwise we lost the ability to roll back changes by reverting a single
>>> commit and also generally cause a lot of noise in the commit history that
>>> does not help other contributors. To be clear, I refer to the "Fixup!",
>>> "Address comments", "Address even more comments" type of entries :)
>>>
>>> I would also propose that every commit gets tagged with a JIRA (except
>>> those fixups that will be squashed). Having the JIRA and possibly other
>>> tags makes it easier for others not involved in the PR to identify changes
>>> after they were merged, for example when looking at the revision history or
>>> annotated source.
>>>
>>> As for other scenarios of jumbo PRs with many commits, there are
>>> probably situations where work needs to be broken down into smaller units,
>>> making life better for both, contributor and reviewer(s). Ideally, every PR
>>> would have only one commit, but that may be a bit much to mandate? Is the
>>> general expectation something we need to document more clearly?
>>>
>>> Thanks,
>>> Thomas
>>>
>>>

Reply via email to