SlideShare a Scribd company logo
Trunk	
  Based	
  Development	
  
          Demys4fied	
  
       	
                                	
  
       	
                                	
  
  Carlos	
  Lopes	
              Guilherme	
  Lacerda	
  
 ThoughtWorks	
                  FACENSA/UniRiBer	
  
                        TargetTrust/Surya	
  SoCware	
  Innova4on	
  
agenda	
  

the	
  problem	
  

impacts	
  

solu2ons!	
  

when	
  to	
  branch?	
  
the	
  problem	
  
different	
  streams,	
  
 same	
  codebase	
  
Trunk Based Development Demystified
branches!	
  
Ronald	
  Widha	
  
Trunk Based Development Demystified
Trunk Based Development Demystified
merge	
  hell	
  
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	
  
      	
  }	
  
	
  
}	
  
seman2c	
  conflict	
  

class	
  BlaBlaBla	
  {	
  
	
  
      	
  public	
  void	
  something(Bla	
  bla)	
  {	
  
<<<<<<<	
  HEAD	
  
      	
   	
  bla	
  =	
  bla.plus(14);	
  
=======	
  
      	
   	
  bla	
  =	
  bla.minus(7);	
  
>>>>>>>	
  change	
  
      	
   	
  //other	
  stuff	
  
      	
  }	
  
	
  
}	
  
integra2on	
  conflicts	
  
     main.jsp:	
  <%@include	
  file="bla.jspf"	
  %>	
  
     	
  
     	
  
     	
  
master:	
                  agivenbranch:	
  
	
                         	
  
new-­‐file.jsp:	
           bla.jspf	
  -­‐>	
  ble.jspf	
  
<%@include	
               	
  
file="bla.jspf"	
  %>	
     main.jsp:	
  
	
                         <%@include	
  
	
                         file="ble.jspf"	
  %>	
  
	
                         	
  
                           	
  
                           	
  
the	
  merge	
  man/monkey	
  
promiscuous	
  integra2on	
  




                         Mar6n	
  Fowler	
  
$$$$	
  
Jon	
  Wolter	
  
regressions	
  
Jon	
  Wolter	
  
Jon	
  Wolter	
  
the	
  bigger	
  the	
  apparent	
  
reason	
  to	
  branch,	
  the	
  more	
  
  you	
  shouldn’t	
  branch. 	
  


                            Jez	
  Humble	
  /	
  David	
  Farley	
  
don't	
  separate	
  differing	
  
concerns	
  by	
  using	
  a	
  VCS,	
  use	
  
  an	
  abstrac6on	
  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	
  
features	
  at	
  run6me/deploy6me	
  they	
  couple	
  
 themselves	
  to	
  the	
  source	
  control	
  providing	
  
 this	
  mechanism	
  through	
  manual	
  merging 	
  
                                    	
  
                                                            Dan	
  Bodart	
  
all	
  right,	
  but	
  how	
  to
         solve	
  this?	
  
branch	
  by	
  	
  
source	
  control?	
  
Trunk Based Development Demystified
there’s	
  hope!	
  
approaches	
  
hide	
  new	
  func2onality	
  
abstrac2on	
  
big	
  bang	
  




                  Paul	
  Hammant	
  
itera2ve	
  




               Paul	
  Hammant	
  
small	
  releasable	
  changes	
  
componen2za2on	
  
enable	
  flow	
  
across	
  teams	
  
KEEP	
  IT	
  ALWAYS	
  RELEASABLE	
  
KEEP	
  IT	
  ALWAYS	
  RELEASABLE	
  
CONTINUOUS	
  INTEGRATION	
  
CONTINUOUS	
  INTEGRATION	
  
program	
  level	
  	
  
        product	
  owner/champion	
  	
  
                       	
  

knows	
  each	
  project	
  champion	
  and	
  
        how	
  to	
  reach	
  people	
  
Uncle	
  Bob	
  
but	
  when	
  to	
  branch?	
  
large	
  change	
  
	
  -­‐	
  headaches!	
  
	
  
spikes	
  
-­‐	
  if	
  you	
  throw	
  them	
  away	
  
	
  
new	
  release	
  
-­‐	
  hmm	
  
Paul	
  Hammant	
  
more	
  info	
  

www.codingbyexample.org	
  
thanks!	
  
Trunk Based Development Demystified

More Related Content

PDF
Trunk Based Development Explored
PDF
Trunk Based Development Explored
PDF
Tbd demystified agiles2011
PDF
Bate-papo Trunk Based Development
PDF
Multiple projects, different goals, one thing in common: the codebase! at Agi...
PPTX
Continuous Deployment for Atlassian Plugins - AtlasCamp 2011
PPTX
TDD na Veia! Mas o Hello World continua sem cobertura
PDF
Agile official
Trunk Based Development Explored
Trunk Based Development Explored
Tbd demystified agiles2011
Bate-papo Trunk Based Development
Multiple projects, different goals, one thing in common: the codebase! at Agi...
Continuous Deployment for Atlassian Plugins - AtlasCamp 2011
TDD na Veia! Mas o Hello World continua sem cobertura
Agile official

Viewers also liked (9)

PDF
AgileDay2012 - Resumo Coding By Example
PDF
Continuous Delivery - Em Busca da Entrega Perfeita!
PDF
Trunk Based Development (CBSoft 2011)
PDF
Wsl2011 Módulo SCRUM para Expresso Livre
PDF
Agile Brazil 2012 - Tutorial Coding By Example
PDF
Continuous Delivery. Em Busca da Entrega Perfeita!
PDF
Feature Toggle Examples
PDF
5S em Código (CBSoft 2011)
PDF
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
AgileDay2012 - Resumo Coding By Example
Continuous Delivery - Em Busca da Entrega Perfeita!
Trunk Based Development (CBSoft 2011)
Wsl2011 Módulo SCRUM para Expresso Livre
Agile Brazil 2012 - Tutorial Coding By Example
Continuous Delivery. Em Busca da Entrega Perfeita!
Feature Toggle Examples
5S em Código (CBSoft 2011)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Ad

Similar to Trunk Based Development Demystified (20)

PDF
Neo4j Stored Procedure Training Part 1
PPTX
Hadoop and Marklogic: Using the Genetic Algorithm to generate Source Code
PDF
Bazaar for Mere Mortals
PDF
DVCS branching (with mercurial)
PDF
React & Flux Workshop
PDF
CONFidence 2015: when something overflowing... - Peter Hlavaty
PDF
When is something overflowing
PDF
TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...
PDF
CI workflow in a web studio
PDF
Why gradle
PPT
The State of Drupal 8
PPTX
Value driven continuous delivery
PPTX
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
PDF
Javaone - Gradle: Harder, Better, Stronger, Faster
PDF
Software Architecture Anti-Patterns
PDF
One Div To Save Them All: Controlling Drupal Div's and Implementing a Modular...
PDF
Trigger maxl from fdmee
PPTX
Maven in mulesoft - part 2
PDF
Luis Majano The Battlefield ORM
PPTX
Apache Maven supports all Java (JokerConf 2018)
Neo4j Stored Procedure Training Part 1
Hadoop and Marklogic: Using the Genetic Algorithm to generate Source Code
Bazaar for Mere Mortals
DVCS branching (with mercurial)
React & Flux Workshop
CONFidence 2015: when something overflowing... - Peter Hlavaty
When is something overflowing
TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...
CI workflow in a web studio
Why gradle
The State of Drupal 8
Value driven continuous delivery
Тарас Кирилюк та Олена Пустовойт — CI workflow у веб-студії
Javaone - Gradle: Harder, Better, Stronger, Faster
Software Architecture Anti-Patterns
One Div To Save Them All: Controlling Drupal Div's and Implementing a Modular...
Trigger maxl from fdmee
Maven in mulesoft - part 2
Luis Majano The Battlefield ORM
Apache Maven supports all Java (JokerConf 2018)
Ad

More from Carlos Lopes (9)

PDF
Multiple projects, different goals, one thing in common: the codebase!
PDF
Cognitive Biases
PDF
The Power of Retrospectives
PDF
Gambi Design Patterns
PDF
.net code: some ideas to improve yours
PDF
Trunk Based Development
PDF
10 Years Of XP
PDF
The .NET Platform - A Brief Overview
PDF
XP In the Real World
Multiple projects, different goals, one thing in common: the codebase!
Cognitive Biases
The Power of Retrospectives
Gambi Design Patterns
.net code: some ideas to improve yours
Trunk Based Development
10 Years Of XP
The .NET Platform - A Brief Overview
XP In the Real World

Recently uploaded (20)

PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPT
Teaching material agriculture food technology
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
sap open course for s4hana steps from ECC to s4
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Teaching material agriculture food technology
MYSQL Presentation for SQL database connectivity
Encapsulation_ Review paper, used for researhc scholars
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Spectroscopy.pptx food analysis technology
Chapter 3 Spatial Domain Image Processing.pdf
MIND Revenue Release Quarter 2 2025 Press Release
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding

Trunk Based Development Demystified