Download - Trunk Based Development Demystified
![Page 1: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/1.jpg)
Trunk Based Development Demys4fied
Carlos Lopes ThoughtWorks
Guilherme Lacerda FACENSA/UniRiBer
TargetTrust/Surya SoCware Innova4on
![Page 2: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/2.jpg)
agenda
the problem
impacts
solu2ons!
when to branch?
![Page 3: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/3.jpg)
the problem
![Page 4: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/4.jpg)
different streams, same codebase
![Page 5: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/5.jpg)
![Page 6: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/6.jpg)
branches!
![Page 7: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/7.jpg)
Ronald Widha
![Page 8: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/8.jpg)
![Page 9: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/9.jpg)
![Page 10: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/10.jpg)
merge hell
![Page 11: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/11.jpg)
syntac2c conflict
class BlaBlaBla { <<<<<<< HEAD
public 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: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/12.jpg)
seman2c conflict
class BlaBlaBla {
public void something(Bla bla) { <<<<<<< HEAD
bla = bla.plus(14); =======
bla = bla.minus(7); >>>>>>> change
//other stuff }
}
![Page 13: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/13.jpg)
integra2on conflicts main.jsp: <%@include file="bla.jspf" %> master:
new-‐file.jsp: <%@include file="bla.jspf" %>
agivenbranch: bla.jspf -‐> ble.jspf main.jsp: <%@include file="ble.jspf" %>
![Page 14: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/14.jpg)
the merge man/monkey
![Page 15: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/15.jpg)
promiscuous integra2on
Mar6n Fowler
![Page 16: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/16.jpg)
$$$$
![Page 17: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/17.jpg)
Jon Wolter
![Page 18: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/18.jpg)
regressions
![Page 19: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/19.jpg)
Jon Wolter
![Page 20: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/20.jpg)
Jon Wolter
![Page 21: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/21.jpg)
“the bigger the apparent reason to branch, the more you shouldn’t branch.”
Jez Humble / David Farley
![Page 22: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/22.jpg)
“don't separate differing concerns by using a VCS, use an abstrac6on instead.”
Stacy Curl
![Page 23: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/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
features at run6me/deploy6me they couple themselves to the source control providing this mechanism through manual merging”
Dan Bodart
![Page 24: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/24.jpg)
all right, but how to solve this?
![Page 25: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/25.jpg)
branch by source control?
![Page 26: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/26.jpg)
![Page 27: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/27.jpg)
there’s hope!
![Page 28: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/28.jpg)
approaches
![Page 29: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/29.jpg)
hide new func2onality
![Page 30: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/30.jpg)
abstrac2on
![Page 31: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/31.jpg)
Paul Hammant
big bang
![Page 32: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/32.jpg)
Paul Hammant
itera2ve
![Page 33: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/33.jpg)
small releasable changes
![Page 34: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/34.jpg)
componen2za2on
![Page 35: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/35.jpg)
enable flow across teams
![Page 36: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/36.jpg)
KEEP IT ALWAYS RELEASABLE
![Page 37: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/37.jpg)
KEEP IT ALWAYS RELEASABLE
![Page 38: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/38.jpg)
CONTINUOUS INTEGRATION
![Page 39: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/39.jpg)
CONTINUOUS INTEGRATION
![Page 40: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/40.jpg)
program level product owner/champion
knows each project champion and how to reach people
![Page 41: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/41.jpg)
Uncle Bob
![Page 42: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/42.jpg)
but when to branch?
![Page 43: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/43.jpg)
large change -‐ headaches! spikes -‐ if you throw them away new release -‐ hmm
![Page 44: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/44.jpg)
Paul Hammant
![Page 45: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/45.jpg)
www.codingbyexample.org
more info
![Page 46: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/46.jpg)
thanks!
![Page 47: Trunk Based Development Demystified](https://reader033.vdocuments.us/reader033/viewer/2022052822/554f1846b4c905723a8b4a51/html5/thumbnails/47.jpg)