Ralph Castain <r...@open-mpi.org> writes:
> We go the other direction - all code must be committed to master so it
> can “soak” prior to moving to a release branch. 

Maybe we're miscommunicating.  Normal lifecycle for a bug fix is

  # start from oldest maintenance branch to which the fix is relevant
  git checkout -b jed/bug-fix maint
  ... fix bug, commit, submit pull request, review, revise if needed

  # [optional] If using 'next' for eager users/testing prior to 'master'
  git checkout next
  git merge jed/bug-fix
  ... "eager" users test this bug fix in combination with everything else

  # feature graduates to 'master'
  git checkout master
  git merge jed/bug-fix
  ... users of 'master' interact with bug fix, bringing more confidence

  # feature merged to release/maintenance branch
  git checkout maint
  git merge jed/bug-fix


At the end of the day, there is only one commit effecting the change and
we can easily check who has it.  If someone else needs the fix in their
development branch, they can get it without side-effects by merging
jed/bug-fix.  The 'next' branch, which is entirely optional, helps
further stabilize 'master' - bugs in 'master' *disrupt other developers*
while bugs in 'next' only disrupt testing.  Here's a diagram:

  
https://docs.google.com/drawings/d/1hvwyCIw4Wq3NoRrPpWfPTriJn5MM2_QkaacAaql8FQE/edit

The "merging upward" is about

  git checkout master
  git merge maint
  git checkout next
  git merge master

These merges rarely contain non-merge commits (the topic branches were
already merged to 'next' and then 'master'); they just tie up the graph
so that subsequent merges only contain the "interesting" content.


If instead, your workflow has you committing a bug-fix on 'master', you
have to rebase/cherry-pick it to get it into a release branch without
side-effects.  Now your repository has two commits that do the same
thing.  A workflow should make it easy to get bug-fixes and features to
different audiences (e.g., release users versus developers) without
side-effects and without duplication.

> The “upward” methodology works fine for stable situations where the
> master isn’t changing much relative to the releases, 

I disagree.  There are many agile projects that merge upward using topic
branches, as described above.

Attachment: pgpW_Tq0T84ls.pgp
Description: PGP signature

Reply via email to