We’ve Been
Here Before
Now we know what we’re doing...
Slide 4
Slide 4 text
...maybe
Slide 5
Slide 5 text
The Hybrid Model
Slide 6
Slide 6 text
• Master Integration
• Feature
• Release Assembly
Three Types of Branches
Slide 7
Slide 7 text
• Contains only released code
• Always releasable
(continuous deployment)
• No active work ongoing
What Is: Master
Slide 8
Slide 8 text
• Active, in-progress work
• New code is always done in a
feature branch
• Contains an independent,
fully-functional feature
What Is: Feature
Slide 9
Slide 9 text
• Contains code being prepared
for release
• Made up of merges from
feature branches
• No active work ongoing.
What Is: Release
Slide 10
Slide 10 text
A Generic Scenario
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
Another day,
another promotion
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
Break Them Up
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Work Progresses
and
Time Passes
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Time to Think
QA and Releases
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
What’s Going On
• QA starts testing the release
• Developers are working on
the feature branches
• Life is good...
Slide 21
Slide 21 text
When suddenly,
QA finds a BUG
as they often do
Slide 22
Slide 22 text
If the bug is with Feature A,
where does the fix go?
QA starts testing here, finds bug...
Slide 23
Slide 23 text
fixed here
Slide 24
Slide 24 text
QA resumes testing here
Merge feature branch to release branch again
Slide 25
Slide 25 text
Good thing we branched.
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
And finally, it’s
ready for release!
Slide 29
Slide 29 text
After the release is done, code
is shipped, everyone is happy...
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
But wait, someone decided to kill Feature B
two days before release!
WHAT DO WE DO?
Slide 32
Slide 32 text
We burn the office to the ground.
Slide 33
Slide 33 text
Not an option?
Slide 34
Slide 34 text
Good thing we branched.
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
Delete the release branch!
Slide 37
Slide 37 text
Create a new release branch!
QA resumes testing with new release
Slide 38
Slide 38 text
That was easy.
Slide 39
Slide 39 text
Good thing we branched.
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
Oh snap, we need to
start on the next release
RIGHT NOW
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
Good thing we branched.
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
got the theme yet?
Slide 46
Slide 46 text
The Rules
• All work is done in feature
branches
• All release branches must be
branched from master
• Master contains only released
code
Slide 47
Slide 47 text
An Important Note
• Merge direction is critical
to keeping code isolated
• Releases only merge down
to master or from features.
• Features only merge up
from master