I think many of the bullet points are what we are currently doing
(guidelines for commit comments, feature branches need to stay in sync with
master, no back-merging). I also think that much of what we do now is done
the way it is simply because there *are* vast changes between versions.
Classes are getting shuffled around and changed all the time. If its
feasible to merge branch fixes to master, that's fine, but some quick tests
seem to indicate that this will be messy getting started.

That leaves us with how we do releases. I'm fine with having single
branches for major releases(4.3) and tagging the commits where each
incremental release (4.3.x) is done. I'm trying to remember why we went
with the -forward, I'm sure it's in the mailing list somewhere, but one of
the nice things it provides is the ability for the release manager to
control what changes are made during code freeze while giving people a
place to stage fixes (though admittedly this is not always followed).
Without -forward, would the flow be for each dev to have their own repo and
issue pull requests for bugfixes?


On Mon, Jun 2, 2014 at 3:17 AM, Rajani Karuturi <rajani.karut...@citrix.com>
wrote:

> Any other suggestions/objections/comments??
> Can we discuss this in detail and agree to a process??
>
>
> ~Rajani
>
>
>
> On 02-Jun-2014, at 9:32 am, Rajani Karuturi <rajani.karut...@citrix.com>
> wrote:
>
> > Yes as mike said, if its a one-off case we can do a empty merge(merge -s
> ours) for it and git will assume its merged but will not bring in any
> changes.
> >
> > If the branches diverged a lot, for example after a major rewrite, we
> could stop merging to that branch and above and make the fix manually.
> >
> >
> > ~Rajani
> >
> >
> >
> > On 30-May-2014, at 11:26 pm, Mike Tutkowski <
> mike.tutkow...@solidfire.com> wrote:
> >
> >> Yep, that's what I was referring to in that a particular fix for an old
> >> release may not apply to newer versions. That does happen.
> >>
> >> We used to mark those as "don't need to merge to branch x" in SVN and
> then
> >> you handed it however made sense on the applicable branch(es).
> >>
> >>
> >> On Fri, May 30, 2014 at 11:53 AM, Stephen Turner <
> stephen.tur...@citrix.com>
> >> wrote:
> >>
> >>> What happens if a fix isn't relevant for newer versions, or has to be
> >>> rewritten for newer versions because the code has changed? Don't the
> >>> branches diverge and you end up cherry-picking after that?
> >>>
> >>> --
> >>> Stephen Turner
> >>>
> >>>
> >>> -----Original Message-----
> >>> From: Mike Tutkowski [mailto:mike.tutkow...@solidfire.com]
> >>> Sent: 30 May 2014 18:48
> >>> To: dev@cloudstack.apache.org
> >>> Subject: Re: [PROPOSAL] git workflow
> >>>
> >>> I think this flow is something we should seriously consider.
> >>>
> >>> I find cherry picking from branch to branch to be error prone in that
> it's
> >>> easy for someone to forget to cherry pick to all applicable branches
> and
> >>> you don't have any easy way to see the cherry picks are related.
> >>>
> >>> When I worked at HP, we had automated tools check to see if you
> checked a
> >>> fix into a prior release, but not later releases. In such a situation,
> you
> >>> either 1) forgot to perform the check-in or 2) the check-in was no
> longer
> >>> applicable in the later release(s), so you needed to mark it as
> >>> un-necessary (SVN supported this ability...not sure about Git).
> >>>
> >>>
> >>> On Fri, May 30, 2014 at 10:49 AM, Rajani Karuturi <
> >>> rajani.karut...@citrix.com> wrote:
> >>>
> >>>> Hi all,
> >>>>
> >>>>
> >>>>
> >>>> Our current git workflow is confusing with the *forward branches and
> >>>> cherry-picking. Its hard to track on what all releases the commit has
> >>>> gone into unless I do some git log greping. Also, as a contributor, I
> >>>> endup creating patches for each branch as it doesn’t cleanly apply on
> >>>> different branches.
> >>>>
> >>>>
> >>>>
> >>>> I think we should have some guidelines. Here is what I propose.
> >>>>
> >>>>
> >>>>
> >>>> 1.  There should be branch for every major release(ex: 4.3.x, 4.4.x,
> >>>> 5.0.x,5.1.x) and the minor releases should be tagged accordingly on
> >>>> the respective branches.
> >>>> 2.  The branch naming convention is to be followed. Many branches
> >>>> with 4.3, 4.3.0, 4.3.1 etc. is confusing
> >>>> 3.  Cherry-picking should be avoided. In git, when we cherry-pick,
> >>>> we have two physically distinct commits for the same change or fix and
> >>>> is difficult to track unless you do cherry-pick -x
> >>>> 4.  There should always be a continous flow from release branches to
> >>>> master. This doesn’t mean cherry-picking. They should be merged(either
> >>>> ff or no-ff) which retains the commit ids and easily trackable with
> >>>> git branch --contains
> >>>>    *   Every bug fix should always flow from minimal release uptill
> >>>> master. A bug isnt fixed until the fix reaches master.
> >>>>    *   For ex. A bug 4.2.1 should be committed to
> >>>> 4.2.x->4.3.x->4.4.x->master
> >>>>    *   If someone forgets to do the merge, the next time a new commit
> >>> is
> >>>> done this will also get merged.
> >>>> 5.  There should always be a continuous flow from master to feature
> >>>> branches. Meaning all feature branch owners should proactively take
> >>>> any new commits from master by doing a merge from master
> >>>> 6.  The commits from feature branch will make to master on code
> >>>> complete through a merge.
> >>>> 7.  There should never be a merge from master to release branches
> >>>> 8.  Every commit in LTS branch(targetted to any minor release)
> >>>> should have atleast bug id and correct author information
> >>>>    *   Cassandra's template: patch by <author>; reviewed by
> <committer>
> >>>> for CASSANDRA-<ticket>
> >>>> 9.  Once the release branch is created(after code freeze), any bug
> >>>> in jira can be marked with fix version current release(4.4) only on
> >>>> RM's approval and only they can go to the release branch.  This can be
> >>>> done through jira and with certain rules.(may be using jira vote?)
> >>>> this would save the cherry-picking time and another branch
> maintenance.
> >>>>
> >>>>
> >>>>
> >>>> Please add your thoughts/suggestions/comments.
> >>>>
> >>>>
> >>>>
> >>>> Ref:
> >>>> http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html
> >>>> https://www.youtube.com/watch?v=AJ-CpGsCpM0
> >>>>
> >>>> ~Rajani
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> *Mike Tutkowski*
> >>> *Senior CloudStack Developer, SolidFire Inc.*
> >>> e: mike.tutkow...@solidfire.com
> >>> o: 303.746.7302
> >>> Advancing the way the world uses the cloud
> >>> <http://solidfire.com/solution/overview/?video=play>*™*
> >>>
> >>
> >>
> >>
> >> --
> >> *Mike Tutkowski*
> >> *Senior CloudStack Developer, SolidFire Inc.*
> >> e: mike.tutkow...@solidfire.com
> >> o: 303.746.7302
> >> Advancing the way the world uses the cloud
> >> <http://solidfire.com/solution/overview/?video=play>*™*
> >
>
>

Reply via email to