That's where the 4.5-hotfixes branch comes in.

On Thu, Jul 24, 2014 at 8:39 AM, Rajani Karuturi
<rajani.karut...@citrix.com> wrote:
>
> Hi Daan,
> here is what i propose:
>
> 1. rename 'master' to 'develop’
> 2. branch a new 'master' from '4.4’
> 3. branch 'RELEASE-4.5' from the develop
> 4. merge 'RELEASE-4.5' to master once the release voting is done.
>
> RELEASE-4.6 branch should be off develop as all the feature branches would be 
> merged there before freeze for 4.6 and would be merged to master when the 
> release is voted.
>
> The other question I have is in the step:4. how are we going to manage fixes 
> to 4.5 post branch cut?  ( assuming no features as the freeze is done)
>
> ~Rajani
>
>
>
> On 24-Jul-2014, at 11:52 am, Daan Hoogland <daan.hoogl...@gmail.com> wrote:
>
>> Mike, Rajani,
>>
>> Sebastien's point was that the current 4.4 is the closest we have to a
>> releasable branch. I don't mind enting on master but it will require
>> more fixing. In general all of this will require some RM work of all
>> committers. Please ammend my little proposal if you will.
>>
>> On Thu, Jul 24, 2014 at 6:27 AM, Rajani Karuturi
>> <rajani.karut...@citrix.com> wrote:
>>> I agree with mike. I think we should start 4.5 from where master is now
>>> Also create a develop branch from master and continue future work for 4.6 
>>> there.
>>>
>>> I am not clear on how the release branches are going to be maintained.
>>> Are we saying we would create 4.5-RELEASE branch which is essentially same 
>>> as our current -FORWARD branch and continue cherry-picking?
>>>
>>> I would prefer merges to cherry-picks.
>>> Also, I think we should allow committers to commit to the RELEASE branch 
>>> after discussing about it on dev@ and have RM closely monitor them.
>>> Any commit intended for 4.5 RELEASE should be checked in after discussion 
>>> in the 4.5 Release branch and then merged to develop branch.
>>>
>>>
>>> ~Rajani
>>>
>>>
>>>
>>> On 24-Jul-2014, at 1:14 am, Mike Tutkowski <mike.tutkow...@solidfire.com> 
>>> wrote:
>>>
>>>> Per earlier e-mails, I don't think we want to start 4.5 where 4.4 left off
>>>> and then merge features from develop into 4.5.
>>>>
>>>> Why don't we instead start 4.5 where master is now with the assumption that
>>>> since we are past Feature Freeze for 4.5 that master is stable enough?
>>>>
>>>>
>>>> On Wed, Jul 23, 2014 at 12:56 PM, Daan Hoogland <daan.hoogl...@gmail.com>
>>>> wrote:
>>>>
>>>>> so to start formulate a proposal:
>>>>>
>>>>> all work shall be done in a new branch (it is advisable to prefix your
>>>>> branches with your id)
>>>>> when working, features will be cherry-picked/merged into the release
>>>>> branch they are for and next into master.
>>>>> hotfixes will be done in <branchname>-hotfixes
>>>>>
>>>>> as transition we will
>>>>>
>>>>> rename 'master' to 'develop'
>>>>> branch a new 'master' from '4.4'
>>>>> branch '4.5' from the new 'master'
>>>>> merge any features from the new 'develop' to '4.5' and 'master'
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Jul 23, 2014 at 6:39 PM, Sebastien Goasguen <run...@gmail.com>
>>>>> wrote:
>>>>>>
>>>>>> On Jul 23, 2014, at 12:30 PM, Sebastien Goasguen <run...@gmail.com>
>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> On Jul 23, 2014, at 12:21 PM, Nate Gordon <nate.gor...@appcore.com>
>>>>> wrote:
>>>>>>>
>>>>>>>> Let me ask the question, why have master be develop and a release
>>>>> branch be
>>>>>>>> "master"? If we are going to follow gitflow, why not just stick with
>>>>> the
>>>>>>>> norm? If master is the development branch, it might not be stable. I
>>>>> think
>>>>>>>> the goal here is that we have an obvious stable branch. Anyone could
>>>>> come
>>>>>>>> check out master and have the latest useable.
>>>>>>>
>>>>>>> I am in favor of following the norm, so ideally master should be our
>>>>> stable branch (agreed).
>>>>>>>
>>>>>>> The issue is with the transition.
>>>>>>>
>>>>>>> Our latest releasable product is the 4.4 branch (4.4.0 tag), so ideally
>>>>> we could start a stable branch of this tag and build up bug fix releases
>>>>> all the way to 4.5 from there.
>>>>>>>
>>>>>>> But all features for 4.5 are already in master.
>>>>>>>
>>>>>>> So if we create a 'develop' branch of master and stabilize 'master'
>>>>> then develop is now started from a stable tag (4.4.0).
>>>>>>>
>>>>>>
>>>>>> *not* started from a stable tag, and merges will be tricky, no ?
>>>>>>
>>>>>>> So what's the best way to flip ? There is most likely some git magic
>>>>> that can we do.
>>>>>>>
>>>>>>>
>>>>>>> The new git workflow and the transition process need to be part of a
>>>>> proposal that we get consensus on.
>>>>>>>
>>>>>>> getting there :)
>>>>>>>
>>>>>>> -seb
>>>>>>>
>>>>>>>>
>>>>>>>> Also, I'm struggling to understand the benefit of cherry-pick. If you
>>>>>>>> completely squash history, you lose a tremendous amount of context,
>>>>> which I
>>>>>>>> use extensively to figure out why a bug is the way it is. Only knowing
>>>>> that
>>>>>>>> the branch was merged at a given point in time doesn't give any
>>>>> context.
>>>>>>>> Seeing the individual commit history of the branch helps to preserve
>>>>> the
>>>>>>>> rationale for why the code was written the way it was. In theory if
>>>>> every
>>>>>>>> change starts out as a branch (feature, hotfix, release), then why not
>>>>> just
>>>>>>>> merge the branch once it is in a good and acceptable state?
>>>>>>>>
>>>>>>>> I also agree with Mike that this will have to be a transition over
>>>>> time. It
>>>>>>>> will take some time to clean up master to the point where it can be
>>>>>>>> considered a solid stable branch. Possibly as part of the 4.5 release.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Jul 23, 2014 at 10:51 AM, Sebastien Goasguen <run...@gmail.com
>>>>>>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Jul 23, 2014, at 11:38 AM, daan Hoogland <daan.hoogl...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Sebastien,
>>>>>>>>>>
>>>>>>>>>> It seems we can do what you are calling for is creating a branch
>>>>>>>>>> called 'release'. We can merge back into that branch from 4.4,
>>>>> master,
>>>>>>>>>> 4.3. I would like to see people that want a feature or bug fix in a
>>>>>>>>>> branch make a fork of that branch and when that fork is working do a
>>>>>>>>>> cherry-pick. The -forward concept is now used for that but it is
>>>>>>>>>> broken because more then for one piece of work there are commits on
>>>>>>>>>> it. This caused me conflicts during the release. Especially painfull
>>>>>>>>>> as not all was intended to get into the release. We can create this
>>>>>>>>>> 'release' branch now on the basis of 4.4 and start pulling in
>>>>> changes.
>>>>>>>>>
>>>>>>>>> Yes, that's what I am thinking about too, so +1
>>>>>>>>>
>>>>>>>>> Our master would become the -develop- in gitflow terms
>>>>>>>>> The release branch you mention would become the -master- in gitflow
>>>>> terms
>>>>>>>>>
>>>>>>>>> If we start now, indeed we can create 'release' from 4.4 release tag
>>>>>>>>> (voted and shipped).
>>>>>>>>>
>>>>>>>>> That means that to create 4.5 we will need to merge features back into
>>>>>>>>> 'release'. it might be messy because some of those features are
>>>>> already in
>>>>>>>>> our current master.
>>>>>>>>>
>>>>>>>>> But all of this will keep 'release' clean (we can keep track of bugs
>>>>> and
>>>>>>>>> features that are in it in CHANGES file etc..)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> There is a question of control. Do we allow all committers to manage
>>>>>>>>>> the release? I am for that but can imagine not everybody is.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> At first I would say that only the RM can commit to 'release'. As we
>>>>> get
>>>>>>>>> the CI in place  we could relax this and allow commits that pass the
>>>>> CI to
>>>>>>>>> get into 'release', but right now I would vote for a tighter control
>>>>> of
>>>>>>>>> 'release'.
>>>>>>>>>
>>>>>>>>>> rule number 1 will be: you are going to do something to the code, you
>>>>>>>>>> start by creating a branch.
>>>>>>>>>>
>>>>>>>>>> right?
>>>>>>>>>>
>>>>>>>>>> On Wed, Jul 23, 2014 at 5:28 PM, Sebastien Goasguen <
>>>>> run...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Jul 23, 2014, at 11:19 AM, Sam Schmit <sam.sch...@appcore.com>
>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hey everyone,
>>>>>>>>>>>>
>>>>>>>>>>>> I've been a developer for a handful of years and have had my share
>>>>> of
>>>>>>>>>>>> experience with different version control systems.  I've used (for
>>>>>>>>> better
>>>>>>>>>>>> or worse) Git, Perforce, Rational ClearCast, and SVN.
>>>>>>>>>>>>
>>>>>>>>>>>> Each of these solutions offers their own unique set of features,
>>>>>>>>> strengths
>>>>>>>>>>>> and weaknesses.  As there are so many systems that are good at
>>>>> specific
>>>>>>>>>>>> things, it seems best to use the features that the chosen system is
>>>>>>>>> best at.
>>>>>>>>>>>>
>>>>>>>>>>>> Git is great at branching, merging and using that structure to
>>>>>>>>> maintain and
>>>>>>>>>>>> control how changes get into the primary branches.  Git tools even
>>>>> make
>>>>>>>>>>>> this easy by integrating directly into the "Gitflow" to make
>>>>> branching
>>>>>>>>> and
>>>>>>>>>>>> merging that much easier.  It would seem counter-intuitive to NOT
>>>>> make
>>>>>>>>> use
>>>>>>>>>>>> of these built-in capabilities.
>>>>>>>>>>>>
>>>>>>>>>>>> In addition to that, I know that the current method of change
>>>>>>>>> management is
>>>>>>>>>>>> incredibly frustrating to work with, and works directly against the
>>>>>>>>> way a
>>>>>>>>>>>> typical Git user would expect it to be structured.  I should NEVER
>>>>> have
>>>>>>>>>>>> problem compiling and running something on master.  I should not
>>>>> have
>>>>>>>>>>>> problems building anything on a release branch.  A feature/bugfix
>>>>>>>>> branch is
>>>>>>>>>>>> where things can be, and often are, broken or unstable.  There have
>>>>>>>>> been
>>>>>>>>>>>> many times working in Cloudstack where I've had to search for a
>>>>> stable
>>>>>>>>>>>> revision on master, and that's just plain wrong.
>>>>>>>>>>>>
>>>>>>>>>>>> I do realize that having this many developers working on so many
>>>>>>>>> features
>>>>>>>>>>>> and bugfixes will result in a large number of branches.  I don't
>>>>>>>>> believe
>>>>>>>>>>>> this is a good argument against using a branching method, though -
>>>>> I
>>>>>>>>>>>> believe that the current system is even more confusing and
>>>>> difficult
>>>>>>>>> to use.
>>>>>>>>>>>>
>>>>>>>>>>>> I could pontificate on change management quite a bit more, but my
>>>>>>>>> opinion
>>>>>>>>>>>> in summary would basically be:  use Git the way it was meant to be
>>>>>>>>> used,
>>>>>>>>>>>> and things will be better.  Just my two cents.
>>>>>>>>>>>>
>>>>>>>>>>>> Sam
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Sam, I think we are in agreement (at least with folks who responded
>>>>> to
>>>>>>>>> this thread).
>>>>>>>>>>> Or maybe I am not reading your mail right and you don't agree with
>>>>> Leo ?
>>>>>>>>>>>
>>>>>>>>>>> My own take and reason for calling for a change we are currently
>>>>> doing
>>>>>>>>> things is mostly due to the way we release.
>>>>>>>>>>>
>>>>>>>>>>> I would like to see a stable master (and I think we are in agreement
>>>>>>>>> with that).
>>>>>>>>>>> That means that development should not happen on master and that
>>>>> every
>>>>>>>>> commit that lands on master should be shippable.
>>>>>>>>>>>
>>>>>>>>>>> I personally have no issues with cherry-picking. So I would be fine
>>>>>>>>> cherry picking from a hot-fix branch into master, to fix a bug.
>>>>>>>>>>> The end result is that the next commit on master would still mean
>>>>>>>>> master is shippable/releasable.
>>>>>>>>>>>
>>>>>>>>>>> If we agree with this basic concept. The question becomes how do we
>>>>> get
>>>>>>>>> there, considering that master is now full of dev work and potential
>>>>> bug.
>>>>>>>>>>> The only releasable product we have are on the 4.3, 4.4 and previous
>>>>>>>>> release branches.
>>>>>>>>>>>
>>>>>>>>>>> Ideally, I would like to see master becomes 4.4. And work our way
>>>>> back,
>>>>>>>>> merging the new features that are already in master into the new
>>>>> master
>>>>>>>>> (based on 4.4).
>>>>>>>>>>> This could be quite complicated but we need to do it (or something
>>>>> like
>>>>>>>>> it).
>>>>>>>>>>>
>>>>>>>>>>> To move forward, we should make a proposal to the list and call for
>>>>> a
>>>>>>>>> vote.
>>>>>>>>>>>
>>>>>>>>>>> Any takers to start a wiki page proposing a new git process and how
>>>>> we
>>>>>>>>> could move to it (transition path) ?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> -Sebastien
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Jul 23, 2014 at 5:16 AM, Leo Simons <
>>>>>>>>> lsim...@schubergphilis.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hey folks,
>>>>>>>>>>>>>
>>>>>>>>>>>>> With 4.4.0 tagged, is now an opportune time to go and implement
>>>>> this?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I would enthousiastically +1 and get crackin', but I’m not a
>>>>>>>>> committer so
>>>>>>>>>>>>> its not that practical for me to volunteer!
>>>>>>>>>>>>>
>>>>>>>>>>>>> I wanted to point out atlassian’s description of gitflow
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://www.atlassian.com/git/workflows#!workflow-gitflow
>>>>>>>>>>>>>
>>>>>>>>>>>>> which might be easier to read.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Similarly, the git-flow scripts that help out with implementing
>>>>> this
>>>>>>>>> stuff
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://github.com/nvie/gitflow
>>>>>>>>>>>>>
>>>>>>>>>>>>> they also describe the relationship between gitflow and dealing
>>>>> with
>>>>>>>>>>>>> multiple remotes
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://www.atlassian.com/git/workflows#!pull-request
>>>>>>>>>>>>>
>>>>>>>>>>>>> Finally note atlassian’s free sourcetree GUI has built-in support
>>>>> for
>>>>>>>>>>>>> git-flow
>>>>>>>>>>>>>
>>>>>>>>>>>>> http://www.sourcetreeapp.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> Because cloudstack currently is full of rebasing and squashing and
>>>>>>>>>>>>> cherry-picking, you get very little benefit from a tree
>>>>> visualization
>>>>>>>>> tool
>>>>>>>>>>>>> (like this or gitk or ...) right now, but it would be *great* to
>>>>> have
>>>>>>>>> going
>>>>>>>>>>>>> forward.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> cheers,
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Leo
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Jul 1, 2014, at 12:09 AM, Sebastien Goasguen <run...@gmail.com
>>>>>>
>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I would like to re-start this discussion.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Rajani made some good points and someone mentioned Gitflow:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> http://nvie.com/posts/a-successful-git-branching-model/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thinking about our release procedure, we clearly need more tests
>>>>> and
>>>>>>>>> a
>>>>>>>>>>>>> CI. However it looks like this is going to take some time.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In the meantime I think there is nothing preventing us from
>>>>> agreeing
>>>>>>>>> to
>>>>>>>>>>>>> 'git practices', we don't need tests or new infra, we just need to
>>>>>>>>> agree on
>>>>>>>>>>>>> the git workflow.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Right now Master is really a development branch, we should make
>>>>> it a
>>>>>>>>>>>>> stable branch for production with very few commits.
>>>>>>>>>>>>>> This does not mean that we would release less, in contrary this
>>>>> would
>>>>>>>>>>>>> ensure that a commit to master means it's a production release.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In addition gitflow [1] does not do cherry-picks (gets back to
>>>>>>>>> Rajani's
>>>>>>>>>>>>> point) everything is based on merges.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I am of the opinion that git flow provides a nice process. It
>>>>>>>>> basically
>>>>>>>>>>>>> freezes master. Development happens in a 'develop' branch,
>>>>> releases
>>>>>>>>>>>>> branches are branched off of that and merged into master and back
>>>>> into
>>>>>>>>>>>>> develop….etc
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Please read [1] it's a good read.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> And let's discuss,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [1] http://nvie.com/posts/a-successful-git-branching-model/
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -Sebastien
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Jun 2, 2014, at 11:58 PM, Rajani Karuturi <
>>>>>>>>> rajani.karut...@citrix.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> There is also the problem of cherry-picking.
>>>>>>>>>>>>>>> As a contributor, I always endup creating multiple patches for
>>>>> each
>>>>>>>>>>>>> branch as they don’t cleanly apply on the upward branches. which
>>>>> means
>>>>>>>>>>>>> distinct commits for each branch and I don’t easily know which all
>>>>>>>>> branches
>>>>>>>>>>>>> my commit exists unless I do grep.
>>>>>>>>>>>>>>> if we follow merging strategy properly, apart from the first
>>>>> merge
>>>>>>>>> of
>>>>>>>>>>>>> the branch, everything else on top of it should be a painless
>>>>> merge.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ~Rajani
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 02-Jun-2014, at 10:51 pm, Marcus <shadow...@gmail.com>
>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 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>*™*
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Daan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>>
>>>>>>>> *Nate Gordon*Director of Technology | Appcore - the business of cloud
>>>>>>>> computing®
>>>>>>>>
>>>>>>>> Office +1.800.735.7104  |  Direct +1.515.612.7787
>>>>>>>> nate.gor...@appcore.com  |  www.appcore.com
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>
>>>>>>>> The information in this message is intended for the named recipients
>>>>> only.
>>>>>>>> It may contain information that is privileged, confidential or
>>>>> otherwise
>>>>>>>> protected from disclosure. If you are not the intended recipient, you
>>>>> are
>>>>>>>> hereby notified that any disclosure, copying, distribution, or the
>>>>> taking
>>>>>>>> of any action in reliance on the contents of this message is strictly
>>>>>>>> prohibited. If you have received this e-mail in error, do not print it
>>>>> or
>>>>>>>> disseminate it or its contents. In such event, please notify the
>>>>> sender by
>>>>>>>> return e-mail and delete the e-mail file immediately thereafter. Thank
>>>>> you.
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Daan
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *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>*™*
>>>
>>
>>
>>
>> --
>> Daan
>



-- 
Daan

Reply via email to