Difference between revisions of "Branch Model"
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
+ | <<[[TableOfContents]]()>> | ||
+ | |||
= [[OpenStack]] branch model = | = [[OpenStack]] branch model = | ||
Line 21: | Line 23: | ||
|- | |- | ||
| Swift | | Swift | ||
− | | [https://code.launchpad.net/~hudson-openstack/swift/trunk lp:swift] | + | | [https://code.launchpad.net/~hudson-openstack/swift/trunk 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: | ||
+ | * PROJECT being nova, swift... | ||
+ | * 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...) | ||
+ | * 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...) |
Revision as of 14:43, 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:
- PROJECT being nova, swift...
- 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...)
- 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...)