Hello,

We have had a couple feature branches in flight recently. I would like to
review our project policy regarding how we account for the merging of these
feature branches to master and other release line branches. There has been
some discussion on this topic around HBASE-18095, but I want to bring it to
light outside of that context. Whatever we decide here, we should write up
and include in the book.

By way of process, my preference is that when we merge a feature branch, we
retain all of the individual commits (one-to-one with Jira sub-tasks).
Mechanically this means something like the following:
  (1) squash together all commits that correspond with a single Jira
sub-task, making the history into one commit for one sub-task.
  (2) rebase the feature branch onto master;
  (3) create a PR from the feature branch into master;
  (4) use the "rebase and merge" option when merging the PR;
  (5) update the fixVersion of the umbrella and all sub-tasks to the
version of master;
  (6) repeat steps 2-5 for each back-port.

My reason for preferring preservation of sub-commit history is that, in the
event of follow-on addendums and sub-task (something we have a habit of
doing), its easy for release line maintainers to account for which of those
follow-ons have been applied to their branches of interest. If the "squash
and merge" option is chosen, it becomes much more difficult for a release
manager (or indeed, curious historians) to identify exactly which Jira
issues are present in the history.

My reason for preferring PRs for merging feature branches (and back-ports)
over a developer pushing manually is that it gives the maintainer an
opportunity to benefit from the pre-commit robot, and
back-port-branch-specific discussion to occur in the context of the code
changes proposed.

There are certainly other ways of going about this. I'm curious what others
think of the above.

Thanks,
Nick

Reply via email to