git branching for agile teams
Post on 21-Oct-2014
6.024 views
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
Git Branching for Agile Teams
Helping agile teams be awesomemoar^
@svenpet
@svenpet
Sven Peters !
Atlassian Ambassador & Geek
Guten Morgen
Housekeeping
Submit Qs for A!
Smile, we’re on camera.
Tweet to #code4acause
1
2
3
Agenda
Git + agile = BFFs
Branching models for agile teams
Incorporating best practices
Trade-offs to consider
1
2
3
4
Why Git + Agile?
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
potentially shippable, even without this piece
Build in narrow vertical slicesI have a roof!
Make releases a non-eventjust a few dependencies...
2
Make releases a non-event
Chaos!
look Ma, a goat!
I do my thing, too
I do my thing
Hoarding
Isn‘t it ironic?
A Few Words About Git
Branching & merging is hell
In Subversioneverybody stops work until merge is done
waiting until implementation is done
afraid that the build will fail
Branching & merging is a breeze
In Git
Branch-per-Issue Workflow
Keep the main line clean
dev branch = isolation chamber
Clarity & traceability
Branch-per-Issue Workflowfor SaaS teams
sgd-IRKD-30
sgd-IRKD-45
master
A branch for every issue
fortunately, no goats here
sgd-IRKD-30
A branch for every issue
master
sgd-IRKD-30
God-like admin rights optional
A branch for every issue
master
sgd-IRKD-30
A branch for every issue
master
sgd-IRKD-30
A branch for every issue
master
sgd-IRKD-30
gatekeeper
A branch for every issuestill no goats!
Using an Integration Branch
sgd-IRKD-30
sgd-IRKD-45
master
Surprise!
sgd-IRKD-30
sgd-IRKD-45
master
Using an integration branch
integration
sgd-IRKD-30
sgd-IRKD-45
master
Using an integration branch
integration
Branch-per-Issue Workflow
for installed app teams
sgd-IRKD-30
master
Multiple-version support
v 1.2
v 1.1
sgd-IRKD-30
master
Multiple-version support
v 1.2
v 1.1
sgd-IRKD-31
sgd-IRKD-30
master
Multiple-version support
v 1.2
v 1.1bugfix-IRKD-32
master
Multiple-version support
v 1.2
v 1.1
bugfix-IRKD-32
master
Multiple-version support
v 1.2
v 1.1
manually
automatically
https://bitbucket.org/durdn/automatic-merge-hook
The Atlassian Way
Continuous Integration &
Peer Review
Running CI on dev branches
all active branches are under test
1
2
3
Running CI on dev branches
Clone master’s CI configs
Jenkins plugin or Git hook
bitbucket.org/tpettersen/git-ci-hooks
Running CI on dev branches
Running CI on dev branches
sgd-IRKD-30
master
v 1.2
Peer code review
1
2
3
Create request via UI or git request-pull
Review, revise, rinse & repeat
Approve & merge
Peer code review
Additional Considerations
It’s not “pure CI”beware of goats
Dark features
Q & A
#code4acause
@svenpet
Sven Peters !
Atlassian Ambassador & Geek
THANKS