860 likes | 1.43k Views
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!
E N D
Git Branching for Agile Teams moar ^ Helping agile teams be awesome @svenpet
Guten Morgen Sven Peters ? Atlassian Ambassador & Geek @svenpet
Housekeeping Submit Qs for A! 1 Smile, we’re on camera. 2 Tweet to #code4acause 3
Agenda Git + agile = BFFs 1 Branching models for agile teams 2 Incorporating best practices 3 Trade-offs to consider 4
1 Build in narrow vertical slices “big bang” launch MVP launch TESTING TESTING FRONT END FRONT END BACK END BACK END DATABASE DATABASE Time
Build in narrow vertical slices potentially shippable, even without this piece I have a roof!
2 Make releases a non-event just a few dependencies...
Chaos! I do my thing, too I do my thing look Ma, a goat!
Isn‘t it ironic?
everybody stops work until merge is done In Subversion Branching & merging is hell afraid that the build will fail waiting until implementation is done
In Git Branching & merging is a breeze
Branch-per-Issue Workflow
Keep the main line clean dev branch = isolation chamber
Branch-per-Issue Workflow for SaaS teams
A branch for every issue fortunately, no goats here master sgd-IRKD-30 sgd-IRKD-45
A branch for every issue master sgd-IRKD-30 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 issue still no goats!
Using an Integration Branch
Surprise! master sgd-IRKD-30 sgd-IRKD-45
Using an integration branch master integration sgd-IRKD-30 sgd-IRKD-45
Using an integration branch master integration sgd-IRKD-30 sgd-IRKD-45
Branch-per-Issue Workflow for installed app teams
Multiple-version support v 1.1 v 1.2 master sgd-IRKD-30
Multiple-version support v 1.1 v 1.2 master sgd-IRKD-31 sgd-IRKD-30
Multiple-version support bugfix- v 1.1 IRKD-32 v 1.2 master sgd-IRKD-30
Multiple-version support bugfix-IRKD-32 v 1.1 v 1.2 master
The Way Atlassian Multiple-version support manually automatically v 1.1 v 1.2 master https:/ /bitbucket.org/durdn/automatic-merge-hook
Continuous Integration & Peer Review
Running CI on dev branches all active branches are under test
Running CI on dev branches bitbucket.org/tpettersen/git-ci-hooks Clone master’s CI configs 1 Jenkins plugin or Git hook 2 3
Running CI on dev branches v 1.2 master sgd-IRKD-30
Peer code review Create request via UI or git request-pull 1 Review, revise, rinse & repeat 2 Approve & merge 3
Additional Considerations
It’s not “pure CI” beware of goats
More info at... http://atlassian.com/git 1 @Atlassian 2
THANKS Sven Peters ? Atlassian Ambassador & Geek @svenpet