View
2.943
Download
6
Category
Tags:
Preview:
DESCRIPTION
Palestra realiz
Citation preview
Trunk Based Development Trunk Based Development
ExploredExplored
Carlos Lopes
ThoughtWorks
Guilherme Lacerda
FACENSA/UniRitter
TargetTrust/Surya Software Innovation
agenda
the problem
impacts
solutions!
when to branch?
the problemthe problem
different streams,
same codebase
branches!branches!
Ronald Widha
merge hell
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}
}
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}
}
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" %>
the merge man/monkey
promiscuous integration
Martin Fowler
$$$$$$$$
Jon Wolter
regressionsregressions
Jon Wolter
Jon Wolter
“the bigger the apparent
reason to branch, the more reason to branch, the more
you shouldn’t branch.”
Jez Humble / David Farley
“don't separate differing
concerns by using a VCS, use concerns by using a VCS, use
an abstraction instead.”
Stacy Curl
“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
all right, but how to all right, but how to
solve this?solve this?
branch by
source control?source control?
there’s hope!
approaches
hide new functionality
abstractionabstraction
big bang
Paul Hammant
iterative
Paul Hammant
small releasable changes
componentization
enable flow
across teamsacross teams
KEEP IT ALWAYS RELEASABLE
KEEP IT ALWAYS RELEASABLE
CONTINUOUS INTEGRATION
CONTINUOUS INTEGRATION
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
Uncle Bob
when to branch?
large change
spikes
new release
when to branch?
large change
spikes
new release
when to branch?
large change
spikes
new release
Paul Hammant
branching vs. freezingbranching vs. freezingbranching vs. freezingbranching vs. freezing
www.codingbyexample.org
more info
www.codingbyexample.org
thanks!
Recommended