I hear what you are saying - we just beg to disagree :-)

As Jeff said, a lot of it is history, but we’ve found this method works well 
for us and we’ve chosen to continue it.


> On Oct 17, 2014, at 7:35 AM, Jed Brown <j...@jedbrown.org> wrote:
> 
> 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.

Reply via email to