Difference between revisions of "SubsystemsBranchModel"
Line 2: | Line 2: | ||
= Subsystem branch models = | = Subsystem branch models = | ||
− | == Current == | + | == 0. Current model == |
Line 21: | Line 21: | ||
* painful cherry-picks when you're out of the merge window | * painful cherry-picks when you're out of the merge window | ||
− | == | + | == 1. Just add subsystem branches == |
Line 42: | Line 42: | ||
* feature freeze between last milestone and RC1 (for features not in subsystems) | * feature freeze between last milestone and RC1 (for features not in subsystems) | ||
* painful cherry-picks when you're out of the merge window | * painful cherry-picks when you're out of the merge window | ||
− | * subsystem merge | + | |
+ | == 2. "Default" subsystem model == | ||
+ | |||
+ | |||
+ | <pre><nowiki> | ||
+ | defaultsubsystem -------------------------------------------------- | ||
+ | \ / \ / \ / \ / \ / \ / | ||
+ | release -------------------------------------------------------------- | ||
+ | / \ / \ / \ / \ | ||
+ | subsystem2 -------------------------------------------------------- | ||
+ | </nowiki></pre> | ||
+ | |||
+ | |||
+ | * Only features that are ready land in the release branch | ||
+ | * Default subsystem branch used when feature does not belong to specific | ||
+ | |||
+ | Drawbacks: | ||
+ | * No obvious "master" branch (release branch will be frozen and therefore out of date) | ||
+ | |||
+ | == 3. The master subsystem model == | ||
+ | |||
+ | |||
+ | <pre><nowiki> | ||
+ | subsystem -------------------------------------------------- | ||
+ | \ / \ / \ / \ / \ / \ / | ||
+ | master ----------------------------------------------------- | ||
+ | \ / \ / | ||
+ | release ------------------------------------------------------- | ||
+ | </nowiki></pre> | ||
+ | |||
+ | |||
+ | * Subsystem branches get often proposed to master branch | ||
+ | * Other changes get directly to master branch | ||
+ | * Update release branch with master content at merge point, merge back RC bugfixes after release | ||
+ | * RC fixes land in release branch | ||
+ | |||
+ | Drawbacks: | ||
+ | * No release-readiness review (master needs to be release-ready all the time | ||
+ | * no staging ground for features that are not release-ready (for features not in subsystems) | ||
+ | * feature freeze between last milestone and RC1 (for features not in subsystems) |
Revision as of 21:15, 9 May 2012
Subsystem branch models
0. Current model
master ------------------------------------------------------- \ \ \ \ \ \ mp ---- ---- ------------
Use milestone-proposed to control merge windows.
Drawbacks:
- no subsystems with area experts
- no staging ground for features that are not release-ready
- feature freeze between last milestone and RC1
- painful cherry-picks when you're out of the merge window
1. Just add subsystem branches
subsystem -------------------------------------------------- \ / \ / \ / \ / \ / \ / master ------------------------------------------------------- \ \ \ \ \ \ mp ---- ---- ------------
- Add subsystem branch(es) where possible
- Features that do not belong to a subsystem land directly in master
- Use milestone-proposed to control merge windows.
Drawbacks:
- no staging ground for features that are not release-ready (for features not in subsystems)
- feature freeze between last milestone and RC1 (for features not in subsystems)
- painful cherry-picks when you're out of the merge window
2. "Default" subsystem model
defaultsubsystem -------------------------------------------------- \ / \ / \ / \ / \ / \ / release -------------------------------------------------------------- / \ / \ / \ / \ subsystem2 --------------------------------------------------------
- Only features that are ready land in the release branch
- Default subsystem branch used when feature does not belong to specific
Drawbacks:
- No obvious "master" branch (release branch will be frozen and therefore out of date)
3. The master subsystem model
subsystem -------------------------------------------------- \ / \ / \ / \ / \ / \ / master ----------------------------------------------------- \ / \ / release -------------------------------------------------------
- Subsystem branches get often proposed to master branch
- Other changes get directly to master branch
- Update release branch with master content at merge point, merge back RC bugfixes after release
- RC fixes land in release branch
Drawbacks:
- No release-readiness review (master needs to be release-ready all the time
- no staging ground for features that are not release-ready (for features not in subsystems)
- feature freeze between last milestone and RC1 (for features not in subsystems)