On Jul 8, 2014, at 2:20 PM, Nate Gordon <nate.gor...@appcore.com> wrote:
> As someone who has worked with a number of different version control > systems (and have far more love for git than any other), I'm curious as to > why we would want to fight what I've always seen as the core feature of > git. Branching and merging. The gitflow model is incredibly useful for > keeping track of a number of different development paths concurrently. > Branches remained organized and have a clear destination and workflow that > they need to go through as part of the merging process. We use it > internally (on a much smaller team) with great success. And with the > difficulties I've seen on the mailing list around the -forward branches and > cherry-picking,I'm curious as to why this is the preferred method. I don't think it's the preferred method. I see it as 'the method currently used'. I think we need to change. > From > everything I've read about git and cherry-picking, it is a copy of the > commit, not a reference to the original commit. This makes it hard to track > down an individual change to find the original source. > > Thanks, > > -Nate > > > On Tue, Jul 8, 2014 at 11:04 AM, Mike Tutkowski < > mike.tutkow...@solidfire.com> wrote: > >> Thanks for bringing this up again, Sebastien. >> >> I've had http://nvie.com/posts/a-successful-git-branching-model/ up in >> Chrome since you sent that link and been reading through it a bit here and >> there, but have just been too busy as of late to give it a bunch of >> thought. >> >> I agree, though, that we should really think about moving to another model >> of using Git as it is not un-common for master to be broken, which leads to >> a lot of lost development time for many people. >> >> >> On Mon, Jun 30, 2014 at 4:09 PM, 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>*™* >>>>>>> >>>>>> >>>>>> >>>> >>> >>> >> >> >> -- >> *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>*™* >> > > > > -- > > > *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.