git branching for agile teams

49
Git Branching for Agile Teams Helping agile teams be awesome moar ^ @svenpet

Post on 21-Oct-2014

6.020 views

Category:

Technology


1 download

DESCRIPTION

Moving to Git opens up a whole new level of agility for software teams. Freed from the clunky code freezes and monolithic mega-merges that plague centralized version control, developers can isolate work in progress and build in narrow vertical slices with ease. Branching is so painless with Git that many teams are making new branches for each user story or bug fix they implement. This model is quickly becoming the new gold standard for agile teams – and for good reason!

TRANSCRIPT

Page 1: Git Branching for Agile Teams

Git Branching for Agile Teams

Helping agile teams be awesomemoar^

@svenpet

Page 2: Git Branching for Agile Teams

@svenpet

Sven Peters !

Atlassian Ambassador & Geek

Guten Morgen

Page 3: Git Branching for Agile Teams

Housekeeping

Submit Qs for A!

Smile, we’re on camera.

Tweet to #code4acause

1

2

3

Page 4: Git Branching for Agile Teams

Agenda

Git + agile = BFFs

Branching models for agile teams

Incorporating best practices

Trade-offs to consider

1

2

3

4

Page 5: Git Branching for Agile Teams

Why Git + Agile?

Page 6: Git Branching for Agile Teams

Build in narrow vertical slices

DATA B A S E

B AC K E N D

F R O N T E N D

T E ST I N G

Time

“big bang” launch

DATA B A S E

B AC K E N D

F R O N T E N D

T E ST I N G

MVP launch

1

Page 7: Git Branching for Agile Teams

potentially shippable, even without this piece

Build in narrow vertical slicesI have a roof!

Page 8: Git Branching for Agile Teams

Make releases a non-eventjust a few dependencies...

2

Page 9: Git Branching for Agile Teams

Make releases a non-event

Page 10: Git Branching for Agile Teams

Chaos!

look Ma, a goat!

I do my thing, too

I do my thing

Page 11: Git Branching for Agile Teams

Hoarding

Page 12: Git Branching for Agile Teams

Isn‘t it ironic?

Page 13: Git Branching for Agile Teams

A Few Words About Git

Page 14: Git Branching for Agile Teams

Branching & merging is hell

In Subversioneverybody stops work until merge is done

waiting until implementation is done

afraid that the build will fail

Page 15: Git Branching for Agile Teams

Branching & merging is a breeze

In Git

Page 16: Git Branching for Agile Teams

Branch-per-Issue Workflow

Page 17: Git Branching for Agile Teams

Keep the main line clean

dev branch = isolation chamber

Page 18: Git Branching for Agile Teams

Clarity & traceability

Page 19: Git Branching for Agile Teams

Branch-per-Issue Workflowfor SaaS teams

Page 20: Git Branching for Agile Teams

sgd-IRKD-30

sgd-IRKD-45

master

A branch for every issue

fortunately, no goats here

Page 21: Git Branching for Agile Teams

sgd-IRKD-30

A branch for every issue

master

sgd-IRKD-30

God-like admin rights optional

Page 22: Git Branching for Agile Teams

A branch for every issue

master

sgd-IRKD-30

Page 23: Git Branching for Agile Teams

A branch for every issue

master

sgd-IRKD-30

Page 24: Git Branching for Agile Teams

A branch for every issue

master

sgd-IRKD-30

gatekeeper

Page 25: Git Branching for Agile Teams

A branch for every issuestill no goats!

Page 26: Git Branching for Agile Teams

Using an Integration Branch

Page 27: Git Branching for Agile Teams

sgd-IRKD-30

sgd-IRKD-45

master

Surprise!

Page 28: Git Branching for Agile Teams

sgd-IRKD-30

sgd-IRKD-45

master

Using an integration branch

integration

Page 29: Git Branching for Agile Teams

sgd-IRKD-30

sgd-IRKD-45

master

Using an integration branch

integration

Page 30: Git Branching for Agile Teams

Branch-per-Issue Workflow

for installed app teams

Page 31: Git Branching for Agile Teams

sgd-IRKD-30

master

Multiple-version support

v 1.2

v 1.1

Page 32: Git Branching for Agile Teams

sgd-IRKD-30

master

Multiple-version support

v 1.2

v 1.1

sgd-IRKD-31

Page 33: Git Branching for Agile Teams

sgd-IRKD-30

master

Multiple-version support

v 1.2

v 1.1bugfix-IRKD-32

Page 34: Git Branching for Agile Teams

master

Multiple-version support

v 1.2

v 1.1

bugfix-IRKD-32

Page 35: Git Branching for Agile Teams

master

Multiple-version support

v 1.2

v 1.1

manually

automatically

https://bitbucket.org/durdn/automatic-merge-hook

The Atlassian Way

Page 36: Git Branching for Agile Teams

Continuous Integration &

Peer Review

Page 37: Git Branching for Agile Teams

Running CI on dev branches

all active branches are under test

Page 38: Git Branching for Agile Teams

1

2

3

Running CI on dev branches

Clone master’s CI configs

Jenkins plugin or Git hook

bitbucket.org/tpettersen/git-ci-hooks

Page 39: Git Branching for Agile Teams

Running CI on dev branches

Page 40: Git Branching for Agile Teams

Running CI on dev branches

sgd-IRKD-30

master

v 1.2

Page 41: Git Branching for Agile Teams

Peer code review

1

2

3

Create request via UI or git request-pull

Review, revise, rinse & repeat

Approve & merge

Page 42: Git Branching for Agile Teams

Peer code review

Page 43: Git Branching for Agile Teams

Additional Considerations

Page 44: Git Branching for Agile Teams

It’s not “pure CI”beware of goats

Page 45: Git Branching for Agile Teams

Dark features

Page 46: Git Branching for Agile Teams

Q & A

Page 47: Git Branching for Agile Teams

More info at...

1

2

http://atlassian.com/git

@Atlassian

Page 48: Git Branching for Agile Teams

#code4acause

Page 49: Git Branching for Agile Teams

@svenpet

Sven Peters !

Atlassian Ambassador & Geek

THANKS