+ All Categories
Home > Technology > Tbd demystified agiles2011

Tbd demystified agiles2011

Date post: 18-Dec-2014
Category:
Upload: uniritterufrgstjrswildtech
View: 325 times
Download: 2 times
Share this document with a friend
Description:
 
48
Trunk Based Development Trunk Based Development Demystified Demystified Carlos Lopes ThoughtWorks Guilherme Lacerda FACENSA/UniRitter TargetTrust/Surya Software Innovation
Transcript
Page 1: Tbd demystified agiles2011

Trunk Based Development Trunk Based Development

DemystifiedDemystified

Carlos Lopes

ThoughtWorks

Guilherme Lacerda

FACENSA/UniRitter

TargetTrust/Surya Software Innovation

Page 2: Tbd demystified agiles2011

agenda

the problem

impacts

solutions!

when to branch?

Page 3: Tbd demystified agiles2011

the problemthe problem

Page 4: Tbd demystified agiles2011

different streams,

same codebase

Page 5: Tbd demystified agiles2011
Page 6: Tbd demystified agiles2011

branches!branches!

Page 7: Tbd demystified agiles2011

Ronald Widha

Page 8: Tbd demystified agiles2011
Page 9: Tbd demystified agiles2011
Page 10: Tbd demystified agiles2011

merge hell

Page 11: Tbd demystified agiles2011

syntactic conflict

class BlaBlaBla {

<<<<<<< HEAD<<<<<<< HEADpublic void bla(Bla oldBla, New newBla) {

oldBla.bla();newBla.newBla();

=======public void bla(Bla oldBla, Other otherBla) {

oldBla.bla();otherBla.otherBla();

>>>>>>> other commit}

}

Page 12: Tbd demystified agiles2011

semantic conflict

class BlaBlaBla {

public void something(Bla bla) {public void something(Bla bla) {<<<<<<< HEAD

bla = bla.plus(14);=======

bla = bla.minus(7);>>>>>>> change

//other stuff}

}

Page 13: Tbd demystified agiles2011

integration conflicts

main.jsp: <%@include file="bla.jspf" %>

master: agivenbranch:master:

new-file.jsp:<%@include file="bla.jspf" %>

agivenbranch:

bla.jspf -> ble.jspf

main.jsp:<%@include file="ble.jspf" %>

Page 14: Tbd demystified agiles2011

the merge man/monkey

Page 15: Tbd demystified agiles2011

promiscuous integration

Martin Fowler

Page 16: Tbd demystified agiles2011

$$$$$$$$

Page 17: Tbd demystified agiles2011

Jon Wolter

Page 18: Tbd demystified agiles2011

regressionsregressions

Page 19: Tbd demystified agiles2011

Jon Wolter

Page 20: Tbd demystified agiles2011

Jon Wolter

Page 21: Tbd demystified agiles2011

“the bigger the apparent

reason to branch, the more reason to branch, the more

you shouldn’t branch.”

Jez Humble / David Farley

Page 22: Tbd demystified agiles2011

“don't separate differing

concerns by using a VCS, use concerns by using a VCS, use

an abstraction instead.”

Stacy Curl

Page 23: Tbd demystified agiles2011

“feature branching is a poor man's modular

architecture, instead of building systems

with the ability to easy swap in and out with the ability to easy swap in and out

features at runtime/deploytime they couple

themselves to the source control providing

this mechanism through manual merging”

Dan Bodart

Page 24: Tbd demystified agiles2011

all right, but how to all right, but how to

solve this?solve this?

Page 25: Tbd demystified agiles2011

branch by

source control?source control?

Page 26: Tbd demystified agiles2011
Page 27: Tbd demystified agiles2011

there’s hope!

Page 28: Tbd demystified agiles2011

approaches

Page 29: Tbd demystified agiles2011

hide new functionality

Page 30: Tbd demystified agiles2011

abstractionabstraction

Page 31: Tbd demystified agiles2011

big bang

Paul Hammant

Page 32: Tbd demystified agiles2011

iterative

Paul Hammant

Page 33: Tbd demystified agiles2011

small releasable changes

Page 34: Tbd demystified agiles2011

componentization

Page 35: Tbd demystified agiles2011

enable flow

across teamsacross teams

Page 36: Tbd demystified agiles2011

KEEP IT ALWAYS RELEASABLE

Page 37: Tbd demystified agiles2011

KEEP IT ALWAYS RELEASABLE

Page 38: Tbd demystified agiles2011

CONTINUOUS INTEGRATION

Page 39: Tbd demystified agiles2011

CONTINUOUS INTEGRATION

Page 40: Tbd demystified agiles2011

program level program level

product owner/champion product owner/champion

knows each project champion and knows each project champion and

how to reach peoplehow to reach people

Page 41: Tbd demystified agiles2011

Uncle Bob

Page 42: Tbd demystified agiles2011

but when to branch?

Page 43: Tbd demystified agiles2011

large change

- headaches!

spikesspikes

- if you throw them away

new release

- hmm

Page 44: Tbd demystified agiles2011

Paul Hammant

Page 45: Tbd demystified agiles2011

branching vs. freezingbranching vs. freezingbranching vs. freezingbranching vs. freezing

Page 46: Tbd demystified agiles2011

www.codingbyexample.org

more info

www.codingbyexample.org

Page 47: Tbd demystified agiles2011

thanks!

Page 48: Tbd demystified agiles2011

Recommended