On Jul 24, 2014, at 10:45 AM, Daan Hoogland <daan.hoogl...@gmail.com> wrote:
> Any advice on our procedure from this, Leo?

Yes, to follow all the git-flow defaults [1].

* goal is for master to become stable
* new develop which starts from master
  * create with `git flow init`
* ‘abandon’ 4.4 / 4.4-forward
  * anything in there which is not currently
    in master gets cherry-picked into develop
  * accordingly, plan is no 4.4.1
  * if 4.4.1 becomes really necessary, create
    it by cherry-picking from develop
* keep 4.3 to produce 4.3.1 then
  abandon it, too

It is important to realize that a git-flow release/4.5 is _not_ the same as an 
old-style 4.5-forward; a lot more discipline is required.

4.4-forward contains a lot of things which are not purely bugfixes. 4.4-forward 
has additional tests, lots of changes to test suites, things that should go in 
4.4.1 but not 4.4.0, half-merged features that were pulled from 4.4 but remain 
in 4.4-forward, bugfixes that include refactoring, etc etc. In a git-flow 
model, those things would go onto feature/ and/or support/ branches, and from 
there to the develop branch, and definitiely _never_ onto a release branch. It 
was very hard to get 4.4 stable by cherry-picking from 4.4-forward; the 
discipline suggested by git-flow is _exactly_ to avoid that difficulty.

Note git-flow defaults also include:
* feature branches are called feature/feature-thing
  (don’t put your name in there, its meant to be
  descriptive!)
* release branches are called release/{version}
  (not RELEASE-{version})
* hotfixes are called hotfix/{version}-name
  and are based on & merge to master (not usually
  to a release branch, release branches are not
  hot, hotfixes are patches to previous releases,
  i.e. 4.5.1, 4.5.2, 4.5.3 will be hotfixes)
* everyone can commit on release branches,
  everyone can merge to develop (generally you
  don’t need much merging to release branches
  since the only thing you commit there are
  bugfixes, you merge _from_ the release branch
  _to_ the develop branch), merging is _not_ a
  release manager's job (the release manager might
  review or approve bugfixes, but its the committer
  that merges)
* no cherry-picking!


cheers,


Leo

[1] unfortunately, the reason I did this analysis work yesterday was to try and 
find a way to start from 4.4 and go forward from there, first merging in 
4.4-forward and then master, but I don’t see that happening

> On Thu, Jul 24, 2014 at 10:39 AM, Leo Simons <lsim...@schubergphilis.com> 
> wrote:
>>              branch two    diff size   big diff chunks
>>  branch one
>>  4.3         4.4           11MB        hyperv,netscaler,server,engine
>>  4.4         4.4-forward    2MB        tests,marvin
>>  4.4-forward master         6MB        xenapi,xen,xenserver,storage
>>  4.4         master         8MB        xenapi,tests,marvin,xen,xenserver
>>  (See below how I got the numbers.)
>> 
>> Starting git-flow from 4.4 or 4.4-forward and then merging things in from 
>> master means processing hundreds of thousands of lines of diff. Of those 
>> lines, many many thousands of lines will probably not auto-merge due to the 
>> cherry-pick approach. A rebase between any of these branches is not 
>> feasible; git cannot un-pick what happened so it cannot offer much 
>> assistance.

Reply via email to