Daan, thank you. Please see my comments inline.
On 8/7/14, 1:19 PM, "Daan Hoogland" <daan.hoogl...@gmail.com> wrote: >On Thu, Aug 7, 2014 at 7:23 PM, Alena Prokharchyk ><alena.prokharc...@citrix.com> wrote: >> Plus if you read the discussion below the article, you will see that >> people agree that this model doesn’t work well for the case when the >> product support maintenance for older releases, like CS does. > >Not at all, Alena. I don't agree that this model won't work for CS and >I think you are over estimating the amount of people that think so. >This model does work using support branches. It will work very well in >the CS case and is not very far removed from what we are doing right >now. There will always be port work when fixes in older versions need >to be made. You don't merge back support branches to tag the >maintainance release on the master branch. The fix-release-tag can >remain on the branche whether it is merged back or not. The witch hunt >on cherry picking is only perceived. There will be occasions it is >necessary but seldom so. Does it mean that our master branch will miss the fixes from support branches? Or you say we should cherry-pick them all on the top of the master branch. Again, I don’t see how maintaining master branch to reflect the latest release branch, can stabilize our release process. You will still continue to cut the release branches from *develop, which you can’t really call “stable” with this model. I’m still convinced that the best solution in our case would be introducing: * develop branch as a staging branch * merging develop branch to master on a regular basis after the CI test passes * cut release branch from the stable master branch when its time for the release I’m really trying to find the advantages of git-flow model where master reflects the latest release branch, and can’t find any considering that in the CS we are still going to keep those release/support branches, and if people need the latest release code, they can simply get it from there. From the developer stand point, I would be more interested in getting the latest stable code, not the latest stable release. And with the model I propose, that would be the master branch you get the latest stable code from. From release management perspective, I would be more interested in cutting the release branches from the stable branch - gitflow suggests to cut it them from *develop branch rather than master - and *develop is not a stable branch. I don’t see the use of stable master branch during the release, as it reflects already released versions of the CS. May be I am missing the point. Would appreciate people explaining the purpose of a git-flow way of keeping master branch, to solve the existing CS problems. Just because “its a best practice for others” doesn’t sound very convincing. > >> >> "I think this model does not work for bugfixing in older releases, >>though. >> It messes up the neat ordering. >> >> 1. Say we have released Version 1.0.1 and later added features and >> released 1.1.0. >> 2. We discover a bug in 1.0.1 and want to fix it in both version >> 3. We have to add 1.0.2 after 1.1.0 in master and then directly atfer >>(or >> before) also 1.1.1.” > >No this is not true. You can branch 1.0.1 to make 1.0.2 and merge >after it is done, > Merge on a top of 1.1.0, which is the top of master branch? >next you can branch from 1.1.0 to make 1.1.1 and >merge that. >the commits that point to 1.0.2 and 1.1.1 wil not be >removed when deleting the branches and when the fixes are the same and >the merge of 1.0.2 is clean they 1.1.0 doesn't even have to be >branched. if 1.0.1 or 1.0.2 is a conflicting fix then yes. that is the >one exception. you don't merge back. you keep the support branch. > >This is not to far from what we do right now except that we keep old >branches preemptively right now. > >> >> >> Thanks, >> Alena. >> >> On 8/7/14, 10:19 AM, "Alena Prokharchyk" <alena.prokharc...@citrix.com> >> wrote: >> >>>Not quite. That’s what the article suggests: >>> >>>"If you want to fix bugs for older releases or do any other develop >>>there, >>>you will fork a support branch from the appropriate commit in master >>>(you >>>will have all versions ever created there). These branches are just >>>started and not intended to be merged back to master nor develop. This >>>is >>>usually fine, as fixes to "ancient" releases or features requested by >>>customers to be implemented in "ancient" releases can't or should not go >>>back into master. If you still think, you want to port a fix to your >>>main >>>development line (represented by master and develop), just start a >>>hotfix, >>>cherry-pick your changes and finish the hotfix." >>> >>> >>>That doesn’t seem right to me - that NOT ALL the fixes done to >>>4.2.1/4.3.1 >>>maintenance releases for example, will go back to master/develop? Plus >>>it >>>suggests “cherry-picking” stuff if we decide that some fixes worth being >>>back ported. Cherry-picking again? :) Defeats our cherry-pick witch hunt >>>purpose. I think ALL fixes done to any forked branch, should make it >>>into >>>master via merge. >>> >>> >>>On 8/7/14, 6:39 AM, "Tracy Phillips" <tracp...@weberize.com> wrote: >>> >>>>Alena, >>>> >>>>Check this out and see if it would resolve your concern regarding >>>>maintaining multiple releases >>>> >>>>http://stackoverflow.com/questions/16562339/git-flow-and-master-with-mu >>>>lt >>>>i >>>>ple-parallel-release-branches >>>> >>>>git-flow uses support branches to support releases that are not on >>>>master. >>>> >>>> >>>> >>>> >>>> >>>>On Wed, Aug 6, 2014 at 6:28 PM, Alena Prokharchyk < >>>>alena.prokharc...@citrix.com> wrote: >>>> >>>>> >>>>> >>>>> On 8/6/14, 3:18 PM, "Sebastien Goasguen" <run...@gmail.com> wrote: >>>>> >>>>> >[top posting, apologies in advance] >>>>> > >>>>> >I am on vacation, so I will go straight to it :) >>>>> > >>>>> >This all discussion is not about gitflow specifically, it is about >>>>> >modifying our git workflow and our commit practices to something >>>>>more >>>>> >standard that can: >>>>> > >>>>> >- ultimately help improve quality (in itself it won't but it can >>>>>help >>>>>lay >>>>> >a foundation) >>>>> >- provide a stable master (it keeps breaking, it has regressions, it >>>>> >moves really fast etc..) >>>>> >- help cut releases >>>>> > >>>>> >Any committer has write privileges and can do whatever it wants to >>>>>the >>>>> >repos, so we need to get a nice big consensus on what problems we >>>>>are >>>>> >trying to solve, and how best to get there. So let's not make this a >>>>> >debate of yeah or neah gitflow. >>>>> > >>>>> >A better CI is coming but it's not yet there and we have no ETA. >>>>>Even >>>>> >with a CI infra in place, we will need commit discipline to improve >>>>> >quality (covertity, unitests, simulator tests). Changing our git >>>>>commit >>>>> >practices has no cost (just emails and self discipline), so can we >>>>>agree >>>>> >to do that first ? >>>>> > >>>>> >Here are couple high level things that I have in mind ( and I >>>>>confess >>>>>I >>>>> >have not read the entire threads on this yet and ti ma conflict with >>>>> >gitflow). >>>>> > >>>>> >-Master: what goes in master is only something that has been put >>>>>into >>>>>a >>>>> >release (aside from the maintenance releases fixes maybe...). Master >>>>>is >>>>> >the base for any release branch (until we get to 4.5, master will >>>>>still >>>>> >see some high churn to stabilize it, after 4.5 release branch is cut >>>>>we >>>>> >should enter into a stable master mode). >>>>> >>>>> >>>>> Sebastian, we can’t adopt this particular high level thing - when >>>>>master >>>>> reflects the latest stable release with the tags for all previous >>>>>releases >>>>> - because support maintenance releases for multiple CS versions in >>>>> parallel. And while master’s latest version is 4.4, 4.2.1 and 4.3.1 >>>>>can >>>>>be >>>>> released. And there is no way to merge them back to master w/o >>>>>breaking >>>>> the branch history. >>>>> >>>>> The model when master reflects the latest released branch, can be >>>>>used >>>>>for >>>>> the systems with rolling upgrades only, no maintenance releases for >>>>> previous versions of the software. >>>>> >>>>> To get more details, please read the latest email exchange (today’s) >>>>>on >>>>> git workflow between me/Rohit and Dave Nalley. >>>>> >>>>> >>>>> >>>>> > >>>>> >-Release: from the time a release branch is cut, features are only >>>>>merged >>>>> >by RM. hot fixes are only merged by RM. the RM is responsible for >>>>>the >>>>> >entire release process. Since he defines the scope and is the >>>>>primary >>>>> >person responsible to check BVT for the release branch he should be >>>>>able >>>>> >to release on-time. Major release gets merged back into master. >>>>> > >>>>> >-Devs: folks working on features and fixes are responsible to merge >>>>>into >>>>> >the develop branch and call the RM for a merge into a release branch >>>>> >(this may vary with gitflow, where release branch is cut from >>>>>develop) >>>>> > >>>>> >Once we have CI, it should run on every branch. >>>>> > >>>>> >-sebastien >>>>> > >>>>> > >>>>> >On Aug 6, 2014, at 5:36 PM, Alena Prokharchyk >>>>> ><alena.prokharc...@citrix.com> wrote: >>>>> > >>>>> >> Edison, thank you for raising the concern about the BVT/CI. >>>>>Somebody >>>>> >> mentioned earlier that we should separate git workflow >>>>>implementation >>>>> >>from >>>>> >> the CI effort, but I do think we have to do in in conjunction. >>>>>Otherwise >>>>> >> what is the point in introducing staging/develop branch? If there >>>>>is >>>>>no >>>>> >> daily automation run verifying all the code merged from >>>>>hotFixes/feature >>>>> >> branches (and possibly reverting wrong checkins), we can as well >>>>>merge >>>>> >>the >>>>> >> code directly to master. >>>>> >> >>>>> >> -Alena. >>>>> >> >>>>> >> On 8/6/14, 2:30 PM, "Edison Su" <edison...@citrix.com> wrote: >>>>> >> >>>>> >>> >>>>> >>> >>>>> >>>> -----Original Message----- >>>>> >>>> From: Alena Prokharchyk [mailto:alena.prokharc...@citrix.com] >>>>> >>>> Sent: Wednesday, August 06, 2014 12:59 PM >>>>> >>>> To: dev@cloudstack.apache.org >>>>> >>>> Subject: Re: [VOTE] git workflow >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>> On 8/6/14, 12:52 PM, "Erik Weber" <terbol...@gmail.com> wrote: >>>>> >>>> >>>>> >>>>> On Wed, Aug 6, 2014 at 9:21 PM, Alena Prokharchyk < >>>>> >>>>> alena.prokharc...@citrix.com> wrote: >>>>> >>>>> >>>>> >>>>>> Agree with you, Rohit. The changes to the git model we use, >>>>>are >>>>> >>>>>> needed indeed. But we should address only the problems that >>>>>CS >>>>> >>>>>>faces, >>>>> >>>>>> and the main problem - quality control. The proposal should >>>>>be >>>>> >>>>>> limited just to the changes that are really needed for the >>>>>CS, >>>>>and >>>>> >>>>>> that will work with the current CS model (minor maintenance >>>>> >>>>>>releases >>>>> >>>>>> support is a part of it) >>>>> >>>>>> >>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> Theoretically you don't really have to change anything other >>>>>than >>>>> >>>>> merging instead of cherry picking. >>>>> >>>>> That is the main issue from a release perspective. >>>>> >>>>> >>>>> >>>>> But I still think there are good reasons to do so; >>>>> >>>>> >>>>> >>>>> 1) using a well known way of handling code/releases instantly >>>>>tells >>>>> >>>>>new >>>>> >>>>> contributors / committers how we work. add to the fact that >>>>>there >>>>> >>>>> exists tools to help doing this correctly is a bonus. >>>>> >>>>> 2) having a known stable (atleast in theory) release as master >>>>>is >>>>> >>>>>good >>>>> >>>>> practice. although not many users will be running from git, i >>>>>still >>>>> >>>>> consider it to be good practice. >>>>> >>>>> 3) there is a huge belief in this thread/discussion that as >>>>>long >>>>>as >>>>> >>>>> something passes CI / BVT it is considered stable. The fact is >>>>>that >>>>> >>>>>it >>>>> >>>>> is not. Take the recent 4.4 release as a good example, where a >>>>>new >>>>> >>>>> install was not working at all at the point of release. Now, >>>>>this >>>>>is >>>>> >>>>> more a CI / test coverage issue than git workflow issue, but i >>>>>find >>>>> >>>>>it >>>>> >>>>> weird to use as an argument for not improving the workflow. >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> Erik >>>>> >>>> >>>>> >>>> I¹m not arguing against keeping master release stable; I >>>>>advocate >>>>>for >>>>> >>>> it. >>>>> >>> >>>>> >>> +1, we need to take action to make sure master is stable. Frankly >>>>> >>> speaking, >>>>> >>> I don't want to fix the regression on the master, I assume nobody >>>>>want >>>>> >>>to >>>>> >>> do that. >>>>> >>> Here is the list of regression issues(not introduced by myself) I >>>>>fixed >>>>> >>> on master after 4.4: >>>>> >>> >>>>> >>> CLOUDSTACK-7123 >>>>> >>> CLOUDSTACK-7110 >>>>> >>> CLOUDSTACK-7166 >>>>> >>> CLOUDSTACK-7164 >>>>> >>> Most of this issues will be caught even by a simulator BVT. I >>>>>want >>>>>to >>>>> >>> make it clear, that, >>>>> >>> If we don't take action to reduce/eliminate the regression as >>>>>much >>>>>as >>>>> >>> possible in the future, I will not fix any of this regression >>>>>issues. >>>>> >>> I remember there is discussion about setting up a staging branch, >>>>>run >>>>> >>>BVT >>>>> >>> against it for each commit, what's the conclusion if any? Why so >>>>> >>> difficult to make it happen? Is there anything I can help to make >>>>>it >>>>> >>> happen? >>>>> >>> >>>>> >>>> But we can¹t adopt git workflow way of keeping master branch to >>>>>be >>>>>a >>>>> >>>> reflection of the latest release branch. It will not work with >>>>>our >>>>>way >>>>> >>>> of >>>>> >>>> handling maintenance releases for multiple versions of CS - see >>>>> >>>>another >>>>> >>>> thread. >>>>> >>> >>>>> >>> >>>>> >>> +1, I'll -1 on any of proposal, if it doesn't solve problem most >>>>>of >>>>>us >>>>> >>> are concerning about. >>>>> >>> >>>>> >>>> >>>>> >>>> Instead, master branch should reflect the latest code that >>>>>passed >>>>>the >>>>> >>>> CI test >>>>> >>>> (the code merged from *develop after CI passes). The release >>>>>branches >>>>> >>>> should be cut from stable master branch - it will ensure that we >>>>>won¹t >>>>> >>>> face >>>>> >>>> last minute blockers as for 4.4, because master IS a stable >>>>>branch. >>>>> >>>> And yes, we should do merges instead of cherry picking. >>>>> >>>> >>>>> >>>> >>>>> >>>> >>>>> >>>>> >>>>> >>> >>>>> >> >>>>> > >>>>> >>>>> >>> >> > > > >-- >Daan