Jump to: navigation, search

Difference between revisions of "SubsystemsBranchModel"

Line 19: Line 19:
 
* no staging ground for features that are not release-ready
 
* no staging ground for features that are not release-ready
 
* feature freeze between last milestone and RC1
 
* feature freeze between last milestone and RC1
* painful cherry-picks when you're out of the merge window
+
* painful cherry-picks while MP exists
  
 
== 1. Just add subsystem branches ==
 
== 1. Just add subsystem branches ==
Line 40: Line 40:
 
Drawbacks:
 
Drawbacks:
 
* no staging ground for features that are not release-ready (for features not in subsystems)
 
* 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)
+
* feature freeze between last milestone and RC1
* painful cherry-picks when you're out of the merge window
+
* painful cherry-picks while MP exists
  
 
== 2. "Default" subsystem model ==
 
== 2. "Default" subsystem model ==
Line 59: Line 59:
  
 
Drawbacks:
 
Drawbacks:
* No obvious "master" branch (release branch will be frozen and therefore out of date)
+
* No obvious "master" branch (release branch will be often frozen and therefore out of date)
  
 
== 3. The master subsystem model ==
 
== 3. The master subsystem model ==
Line 84: Line 84:
 
* feature freeze between last milestone and RC1 (for features not in subsystems)
 
* feature freeze between last milestone and RC1 (for features not in subsystems)
  
== 4. "Default+master" subsystem model ==
+
== 4. Combo subsystem model ==
  
  
Line 97: Line 97:
  
  
* Only features that are ready land in the release branch
+
* Only features that are ready land in the master branch
 
* Default subsystem branch used when feature does not belong to specific
 
* Default subsystem branch used when feature does not belong to specific
 
* Use milestone-proposed to control merge windows
 
* Use milestone-proposed to control merge windows
  
 
Drawbacks:
 
Drawbacks:
* System is not applicable to projects without subsystems
+
* No feature staging ground unless you use subsystems
 
* painful cherry-picks when you're out of the merge window
 
* painful cherry-picks when you're out of the merge window

Revision as of 21:50, 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 while MP exists

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
  • painful cherry-picks while MP exists

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 often 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 feature staging ground unless you use subsystems
  • 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)

4. Combo subsystem model

defaultsubsystem    --------------------------------------------------
                         \ /    \ /     \ /        \ /      \ /   \ /
master  --------------------------------------------------------------
                 / \          \                        / \  \
mp              /   \          ------                 /   \  -------
subsystem2    --------------------------------------------------------


  • Only features that are ready land in the master branch
  • Default subsystem branch used when feature does not belong to specific
  • Use milestone-proposed to control merge windows

Drawbacks:

  • No feature staging ground unless you use subsystems
  • painful cherry-picks when you're out of the merge window