Slide 1

Slide 1 text

Branching Getting It Right...

Slide 2

Slide 2 text

...for us

Slide 3

Slide 3 text

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

Slide 48

Slide 48 text

Note the direction of the dotted lines

Slide 49

Slide 49 text

Any Last Thoughts?

Slide 50

Slide 50 text

I’m glad you asked

Slide 51

Slide 51 text

Use GIT