Consumer branch (CB) model to solve incremental feature release – “source control issue”
To avoid scary merges before feature release
Do not want the unbaked code to part of production – (enable button)
Ensure health of main/production branch UAT to track progress
In this model we are assuming
Teams – Features – Release date
Team 1 – F1,F2 – Quarter 1
Team 2 – F3,F4,F5 – Quarter 2
Team 3 – F6,F7,F8 – Quarter 3
Team 4 – F9 – Quarter 4
There is a main line of code which always holds the tested production code with the latest release feature code only, and not the unrelased code. With Quearter 1 release of Team 1, production line must only have F1,F2 feature code only and not any unbaked code of Team4 of F9 feature.
The team with current feature release will keep submitting and rest all future relase teams will keep consuming from the Consumer branch (CB). This will minimized the code merging probem and give sufficient time to each team to adjust the code.
There is a local branch (git repository) for each team where they will be taking code from and continue working – for now let’s assume each team as person.
All teams consume the code from consumer branch and only current release branch submits to CI. To ellobrate –
Team 1 continues consume from CB and submit to CB on daily basis (CI) till they release F1,F2 which is further moved to Main line.
Team 2 continues to consume from CB however they submit in their local repository till the time CB is occupied by Team1. After Team1 feature release they will keep submitting code to CB.
Team 3 continues to consume from CB and start submit in CI way untill it is captured by previous release team.
Team 4 and all other team will continue to work in the same pattern.
Incremet is of 3 month(quarter) for Feature release.
QA will always take the code for testing from CB.
At the end of Team 1 release Team 3 will have to deal with merging issue which might have introduced by Team 2 CI submission
There could be some common code refactoring in Team4 which they need to hold till team 3 releases.