On 24-Jul-2014, at 10:25 pm, Mike Tutkowski <mike.tutkow...@solidfire.com> wrote:
> I believe I agree with these steps. > > A couple questions: > > Is 'master' simply always going to be equal to what's the most recent > version of the code that's in production? I think so. master will always be at the latest release and all the previous releases properly tagged. The release branches would be deleted once release is done. > > Also, would 'develop' be for 4.6 code then and 4.5 code would go directly > into RELEASE-4.5? > Yes. 4.6 work should be done on develop branch and any 4.5 bug fixes should be done on the 4.5 branch. ~Rajani > > On Thu, Jul 24, 2014 at 12: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 >> >> > > > -- > *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>*™*