tbd demystified agiles2011
DESCRIPTION
TRANSCRIPT
![Page 1: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/1.jpg)
Trunk Based Development Trunk Based Development
DemystifiedDemystified
Carlos Lopes
ThoughtWorks
Guilherme Lacerda
FACENSA/UniRitter
TargetTrust/Surya Software Innovation
![Page 2: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/2.jpg)
agenda
the problem
impacts
solutions!
when to branch?
![Page 3: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/3.jpg)
the problemthe problem
![Page 4: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/4.jpg)
different streams,
same codebase
![Page 5: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/5.jpg)
![Page 6: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/6.jpg)
branches!branches!
![Page 7: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/7.jpg)
Ronald Widha
![Page 8: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/8.jpg)
![Page 9: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/9.jpg)
![Page 10: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/10.jpg)
merge hell
![Page 11: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/14.jpg)
the merge man/monkey
![Page 15: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/15.jpg)
promiscuous integration
Martin Fowler
![Page 16: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/16.jpg)
$$$$$$$$
![Page 17: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/17.jpg)
Jon Wolter
![Page 18: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/18.jpg)
regressionsregressions
![Page 19: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/19.jpg)
Jon Wolter
![Page 20: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/20.jpg)
Jon Wolter
![Page 21: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/21.jpg)
“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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/22.jpg)
“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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/23.jpg)
“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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/24.jpg)
all right, but how to all right, but how to
solve this?solve this?
![Page 25: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/25.jpg)
branch by
source control?source control?
![Page 26: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/26.jpg)
![Page 27: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/27.jpg)
there’s hope!
![Page 28: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/28.jpg)
approaches
![Page 29: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/29.jpg)
hide new functionality
![Page 30: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/30.jpg)
abstractionabstraction
![Page 31: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/31.jpg)
big bang
Paul Hammant
![Page 32: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/32.jpg)
iterative
Paul Hammant
![Page 33: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/33.jpg)
small releasable changes
![Page 34: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/34.jpg)
componentization
![Page 35: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/35.jpg)
enable flow
across teamsacross teams
![Page 36: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/36.jpg)
KEEP IT ALWAYS RELEASABLE
![Page 37: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/37.jpg)
KEEP IT ALWAYS RELEASABLE
![Page 38: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/38.jpg)
CONTINUOUS INTEGRATION
![Page 39: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/39.jpg)
CONTINUOUS INTEGRATION
![Page 40: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/41.jpg)
Uncle Bob
![Page 42: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/42.jpg)
but when to branch?
![Page 43: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/43.jpg)
large change
- headaches!
spikesspikes
- if you throw them away
new release
- hmm
![Page 44: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/44.jpg)
Paul Hammant
![Page 45: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/45.jpg)
branching vs. freezingbranching vs. freezingbranching vs. freezingbranching vs. freezing
![Page 46: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/46.jpg)
www.codingbyexample.org
more info
www.codingbyexample.org
![Page 47: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/47.jpg)
thanks!
![Page 48: Tbd demystified agiles2011](https://reader034.vdocuments.us/reader034/viewer/2022042623/549676d7b47959384d8b4f3f/html5/thumbnails/48.jpg)