Jump to: navigation, search

Difference between revisions of "Branch Model"

Line 45: Line 45:
  
 
With:
 
With:
* PROJECT being nova, swift...
 
 
* VERSION being the version of the project under development (2011.3)
 
* VERSION being the version of the project under development (2011.3)
 
* DEVMILESTONE being the short name of milestone under development (d2, 1.4.1...) and MILESTONE being the milestone to release (d1, 1.4.0...)
 
* DEVMILESTONE being the short name of milestone under development (d2, 1.4.1...) and MILESTONE being the milestone to release (d1, 1.4.0...)
 +
* DATE being under YYYYMMDD form
 
* TRUNKREV is the revision on ''trunk''
 
* TRUNKREV is the revision on ''trunk''
 
* MPREV is the revision on ''milestone-proposed''
 
* MPREV is the revision on ''milestone-proposed''
  
 
Those (seemingly complex) version numbers actually ensure that you can smoothly upgrade in all scenarios (from trunk to milestone-proposed and back to trunk and to the final version...)
 
Those (seemingly complex) version numbers actually ensure that you can smoothly upgrade in all scenarios (from trunk to milestone-proposed and back to trunk and to the final version...)

Revision as of 14:45, 1 June 2011

<<TableOfContents()>>

OpenStack branch model

Starting with the Diablo cycle, OpenStack core projects use a branching model close to the NVIE model that ensures a continuously-open trunk while still allowing to freeze features and select bugfixes in a release branch (milestone-proposed):

Template:Http://img97.imageshack.us/img97/8242/branchmodel.png

At some point before the release of a milestone (called the "branch point"), the current state of trunk is merged into milestone-proposed, and trunk continues towards the development of the next milestone. The milestone-proposed branches gets testing and bugfixes (that are also backported to trunk), until the release is tagged.

Here are pointers to the branches:

Project trunk
Nova lp:nova
Glance lp:glance
Swift lp:swift

Version numbers

Since we have two branches in parallel, we use version numbers that allow to upgrade from one to the other.

For projects with milestones and releases (Nova, Glance):

  • The trunk generates VERSION~DEVMILESTONE~DATE.TRUNKREV (nova-2011.3~d2~20110531.302)
  • The milestone-proposed branch generates VERSION~MILESTONE~DATE.rMPREV (nova-2011.3~d1~20110531.r301)
  • This gets copied to the milestone PPA at milestone delivery time as VERSION~MILESTONE (nova-2011.3~d1)
  • This gets copied to the release PPA at coordinated release time as VERSION (nova-2011.3)

For projects where milestones == releases (Swift):

  • The trunk generates DEVMILESTONE~DATE.TRUNKREV (swift-1.4.1~20110531.302)
  • The milestone-proposed branch generates MILESTONE~DATE.rMPREV (swift-1.4.0~20110531.r301)
  • This gets copied to the milestone PPA at milestone delivery time as MILESTONE (swift-1.4.0)
  • The most recent milestone gets copied to the release PPA at coordinated release time

With:

  • VERSION being the version of the project under development (2011.3)
  • DEVMILESTONE being the short name of milestone under development (d2, 1.4.1...) and MILESTONE being the milestone to release (d1, 1.4.0...)
  • DATE being under YYYYMMDD form
  • TRUNKREV is the revision on trunk
  • MPREV is the revision on milestone-proposed

Those (seemingly complex) version numbers actually ensure that you can smoothly upgrade in all scenarios (from trunk to milestone-proposed and back to trunk and to the final version...)