Am I correct when I say that, with this approach, master becomes a series of merge commits coming from dev, then ?
A couple questions to follow up: - "features get forked from stable" - forked from master, yes? - "features, when ready, tested against dev branch" - what does this mean? Does this mean, you would merge feature branch into dev branch (locally) then run tests to make sure things work? On 1/2/13 11:19 AM, "Joe Bowser" <bows...@gmail.com> wrote: >OK, Let's rethink this: > >After talking with Brian on the 21st, I think we agree on this: > > * Master remains stable and sits at the most recent released code >(i.e. 2.3.0 once we get 2.3.0 done) (Stable Channel) > * Dev happens on branches for the releases (i.e. 2.4.0) (Dev Channel) > * In the case of a point release, dev happens in the branch of the >major release (i.e. 2.3.1 would happen in the 2.3.0 branch, not >master) (Testing Channel) > * Features get forked on stable then once the feature is ready, >tested against the dev branch. If they work with stable, they SHOULD >work with 2.4.0. If they don't, the tickets get added to 2.4.0 to >make it work with that release. That way things are more predictable >as far as new features are concerned. (You will burn your face >channel). > >Does that make sense? Working on master for things causes us pain and >we should use git conventions to make it simpler for people who expect >our master to work all the time. I don't think this will speed up the >release as much as automating tagging of RCs so that when the JS is >tagged, everything else is tagged. The week it takes to tag an RC is >way too long. > > >On Wed, Jan 2, 2013 at 11:08 AM, Filip Maj <f...@adobe.com> wrote: >> Bumping this thread. I'd like Joe to clarify as well. >> >> On 12/20/12 12:26 PM, "Brian LeRoux" <b...@brian.io> wrote: >> >>>Ok, I want to understand this, let me take a stab. >>> >>>You describe three long-lived branches like this: >>> >>>- Master: This is stable and frozen on the last tagged release. >>>- Dev: the next release to be tagged. Feature branches merged from >>>master when confident. >>>- Unstable: the current working branch for a particular tag. Feature >>>branches merged as needed for collaboration. >>> >>>Everyone works from local feature branch rebasing and committing to >>>master. When that feature branch is considered good enough, it is >>>merged into dev, and work continues. Whatever date we happen to pick >>>for a release that is what dev becomes, we tag, and move that sha to >>>stable if its not an RC. >>> >>>? >>> >>> >>> >>> >>>On Thu, Dec 20, 2012 at 10:52 AM, Joe Bowser <bows...@gmail.com> wrote: >>>> I'm OK with this, but I think your example is off: >>>> >>>> Where n is the current released piece of the software: >>>> >>>> n.x.x = Stable >>>> n+1.x.x = Dev >>>> master = Unstable, can have things merged in from feature branches >>>> >>>> This fully uncouples features from release planning, which is good >>>> because it means the release will land in the version when it's ready, >>>> and not for any other reason. I also propose that we keep using the >>>> same RC tags and that for a final release we tag it x.x.xFinal. We >>>> still need to tag an RC and re-tag it. >>>> >>>> Release Process: >>>> 1. Tag the dev tree >>>> 2. merge the dev tree back into master >>>> 3. Create 2.5.0 branch >>>> 4. File issues from 2.5.0 in JIRA >>>> >>>> I also propose that we automate the tagging. If an RC is broken, we >>>> just cut another RC. A lot of our retagging is done to get around the >>>> pain of having to do another RC. The biggest part of the delay is >>>> waiting for every single platform maintainer to tag their platform >>>> after the JS was tagged. For example, I tagged rc2 for the JS and for >>>> Android on Monday last week from my hotel room, and the release wasn't >>>> fully tagged until this week. I'm fine with RCs going up to 10 as >>>> long as we can release early, release often and release when we want >>>> to and not run out of time and have to delay. >>>> >>>> On Thu, Dec 20, 2012 at 10:33 AM, Brian LeRoux <b...@brian.io> wrote: >>>>> Truth. Though lets not get hung up on the past and just focus on the >>>>> present. We've done a really good job getting where we are. >>>>> >>>>> So, Joe, are you saying you like the idea of three long lived >>>>>branches >>>>> and merges happen from local feature branches? >>>>> >>>>> >>>>> On Thu, Dec 20, 2012 at 10:22 AM, Joe Bowser <bows...@gmail.com> >>>>>wrote: >>>>>> We are totally doing something wrong with the way that we do >>>>>>releases. >>>>>> I personally think that we're not using git right, and here's why: >>>>>> >>>>>> Currently, when we do a release, we tag the RC, and we test the RC. >>>>>> There's nothing preventing us from putting things after that tag and >>>>>> if we don't want to those things in the release branching off that >>>>>> tag. We've done it before and other than the problem with CoHo, it >>>>>> worked really well. I propose that instead of tagging the release, >>>>>>we >>>>>> branch when we want to do a release, and we do all the bug fixes on >>>>>> that branch. Once that branch is ready to roll, we merge it back >>>>>>into >>>>>> master. In fact, nobody should be working on master except to do >>>>>> merges. The way we're doing this now feels dirty and wrong. >>>>>> >>>>>> I honestly feel that this is a much faster way of working, and that >>>>>> we're missing the point if we have to tell everyone to jump out of >>>>>>the >>>>>> pool every time we do an RC. I know that we could be working on our >>>>>> branches, but that work is almost entirely invisible to the rest of >>>>>> the project until it's time to merge it back in, which takes >>>>>>forever. >>>>>> >>>>>> >>>>>> On Thu, Dec 20, 2012 at 10:07 AM, Michal Mocny <mmo...@chromium.org> >>>>>>wrote: >>>>>>> So there is something to be said about having devs shift focus from >>>>>>>dev to >>>>>>> testing during an RC. However, as the team grows, not all of us >>>>>>>are >>>>>>>really >>>>>>> being responsible for cutting releases. Maybe that means we need >>>>>>>to >>>>>>>train >>>>>>> the entire team to change current behavior, but that doesn't feel >>>>>>> necessary/scalable. >>>>>>> >>>>>>> With growing external contributions, I would have to say that a >>>>>>>code >>>>>>>freeze >>>>>>> on trunk doesn't seem to make as much sense. >>>>>>> >>>>>>> -Michal >>>>>>> >>>>>>> >>>>>>> On Thu, Dec 20, 2012 at 9:47 AM, Andrew Grieve >>>>>>><agri...@chromium.org> wrote: >>>>>>> >>>>>>>> I definitely think we'd get more done if we didn't have such a >>>>>>>>long >>>>>>>> code-freeze. I'm not sure this is the same as what you were >>>>>>>>suggesting, but >>>>>>>> have a script/tool to branch all of the platforms into an rc >>>>>>>>branch. Then, >>>>>>>> each platform can fix themselves up a bit and tag their RC. >>>>>>>>Meanwhile, dev >>>>>>>> can continue to happen on edge. >>>>>>>> >>>>>>>> My main concern with our current approach is just that the >>>>>>>>code-freeze time >>>>>>>> is super long. >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Dec 19, 2012 at 3:36 PM, Marcel Kinard >>>>>>>><cmarc...@gmail.com> >>>>>>>>wrote: >>>>>>>> >>>>>>>> > One of the things that strikes me here is the difference between >>>>>>>>calendar >>>>>>>> > time and effort time. (This assumes folks already concurred that >>>>>>>>the rc >>>>>>>> is >>>>>>>> > ready to release.) Based on my reading of >>>>>>>>http://wiki.apache.org/** >>>>>>>> > cordova/CuttingReleases >>>>>>>><http://wiki.apache.org/cordova/CuttingReleases>there >>>>>>>> isn't a lot of effort time involved to cut a release. It seems >>>>>>>>like >>>>>>>>a >>>>>>>> > good chunk of the calendar time is getting folks to tag their >>>>>>>>platform. >>>>>>>> > Ideally the promotion from rc to final should take very little >>>>>>>>effort >>>>>>>> time. >>>>>>>> > >>>>>>>> > What I like about the rc is that it provides a settling >>>>>>>>mechanism >>>>>>>>for the >>>>>>>> > churn to calm down, run tests across more integration, and see >>>>>>>>the bigger >>>>>>>> > picture to assess release readiness. I would expect that the >>>>>>>>promotion >>>>>>>> from >>>>>>>> > edge to rc should take a decent amount of effort time, but not >>>>>>>>because of >>>>>>>> > the "cut" activities. >>>>>>>> > >>>>>>>> > So when we are at rc and don't find any surprises, why does it >>>>>>>>take a >>>>>>>> week >>>>>>>> > to promote to final? If we spend a week in rc1, another week in >>>>>>>>rc2, and >>>>>>>> > another week to cut final, that leaves only 1 week in a 4-week >>>>>>>>cycle for >>>>>>>> > active dev work? >>>>>>>> > >>>>>>>> > I like the ideal of a channel/stream/branch/whatever where there >>>>>>>>is a >>>>>>>> > place for the rc to settle without necessarily blocking commits >>>>>>>>to edge. >>>>>>>> > Where I'm going with this is that if there is an area where >>>>>>>>commits to >>>>>>>> the >>>>>>>> > rc are carefully controlled, then perhaps one person (i.e, Steve >>>>>>>>G) could >>>>>>>> > cut the release for ALL platforms using scripts. This may >>>>>>>>involve >>>>>>>>that >>>>>>>> one >>>>>>>> > person tagging/branching/whatever across multiple platforms. >>>>>>>> > >>>>>>>> > I also like putting the "how to cut" magic in each platform. >>>>>>>>Then >>>>>>>>perhaps >>>>>>>> > a good chunk of coho is tests to make sure that the platform >>>>>>>>magic >>>>>>>> > delivered the correct format to it. >>>>>>>> > >>>>>>>> > -- Marcel Kinard >>>>>>>> > >>>>>>>> >>