SlideShare a Scribd company logo
1 of 49
Download to read offline
Trunk	
  Based	
  Development	
  
           Explored	
  
       	
                                	
  
       	
                                	
  
  Carlos	
  Lopes	
              Guilherme	
  Lacerda	
  
 ThoughtWorks	
                  FACENSA/UniRi@er	
  
                        TargetTrust/Surya	
  SoBware	
  InnovaEon	
  
agenda	
  

the	
  problem	
  

impacts	
  

solu2ons!	
  

when	
  to	
  branch?	
  
the	
  problem	
  
different	
  streams,	
  
 same	
  codebase	
  
branches!	
  
Ronald	
  Widha	
  
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?	
  
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	
  
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.	
  freezing	
  
more	
  info	
  

www.codingbyexample.org	
  
thanks!	
  
Trunk Based Development Explored

More Related Content

What's hot

Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
Sumin Byeon
 
InnerSource - Using open source best practices to help your company
InnerSource - Using open source best practices to help your companyInnerSource - Using open source best practices to help your company
InnerSource - Using open source best practices to help your company
Eric Caron
 
Git workflows
Git workflowsGit workflows
Git workflows
Xpand IT
 

What's hot (20)

Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentation
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 
Презентация Git-flow (на русском)
Презентация Git-flow (на русском)Презентация Git-flow (на русском)
Презентация Git-flow (на русском)
 
Git and GitFlow branching model
Git and GitFlow branching modelGit and GitFlow branching model
Git and GitFlow branching model
 
Feature flags to speed up & de risk development
Feature flags to speed up & de risk developmentFeature flags to speed up & de risk development
Feature flags to speed up & de risk development
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
GitHub
GitHubGitHub
GitHub
 
InnerSource - Using open source best practices to help your company
InnerSource - Using open source best practices to help your companyInnerSource - Using open source best practices to help your company
InnerSource - Using open source best practices to help your company
 
Bitbucket pipelines
Bitbucket pipelinesBitbucket pipelines
Bitbucket pipelines
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flow
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Git workflows
Git workflowsGit workflows
Git workflows
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Git flow
Git flowGit flow
Git flow
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Git undo
Git undoGit undo
Git undo
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 
Confluence
ConfluenceConfluence
Confluence
 

Viewers also liked

Trunk Based Development
Trunk Based DevelopmentTrunk Based Development
Trunk Based Development
Carlos Lopes
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real World
Carlos Lopes
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
Carlos Lopes
 

Viewers also liked (20)

Trunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and EconomicsTrunk Based Development in the Enterprise - Its Relevance and Economics
Trunk Based Development in the Enterprise - Its Relevance and Economics
 
Trunk based development
Trunk based developmentTrunk based development
Trunk based development
 
Trunk Based Development
Trunk Based DevelopmentTrunk Based Development
Trunk Based Development
 
Branching Strategies: Feature Branches vs Branch by Abstraction
Branching Strategies: Feature Branches vs Branch by AbstractionBranching Strategies: Feature Branches vs Branch by Abstraction
Branching Strategies: Feature Branches vs Branch by Abstraction
 
Continously delivering
Continously deliveringContinously delivering
Continously delivering
 
Cognitive Biases
Cognitive BiasesCognitive Biases
Cognitive Biases
 
Porque Odeio Branches
Porque Odeio BranchesPorque Odeio Branches
Porque Odeio Branches
 
Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?Is Trunk-based Development Easy in Game Development?
Is Trunk-based Development Easy in Game Development?
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real World
 
Multiple projects, different goals, one thing in common: the codebase! at Agi...
Multiple projects, different goals, one thing in common: the codebase! at Agi...Multiple projects, different goals, one thing in common: the codebase! at Agi...
Multiple projects, different goals, one thing in common: the codebase! at Agi...
 
Phone Home: A client-side error collection system
Phone Home: A client-side error collection systemPhone Home: A client-side error collection system
Phone Home: A client-side error collection system
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
 
Refactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsRefactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the Basics
 
Application versioning
Application versioningApplication versioning
Application versioning
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Lessons from Deploying an EMR in Rural India
Lessons from Deploying an EMR in Rural IndiaLessons from Deploying an EMR in Rural India
Lessons from Deploying an EMR in Rural India
 
Web Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security AwarenessWeb Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security Awareness
 
C# development workflow @ criteo
C# development workflow @ criteoC# development workflow @ criteo
C# development workflow @ criteo
 
TDD and more than 9000 tries to sell it to a customer
TDD and more than 9000 tries to sell it to a customerTDD and more than 9000 tries to sell it to a customer
TDD and more than 9000 tries to sell it to a customer
 
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
How Continuous Delivery and Lean Management Make your DevOps AmazeballsHow Continuous Delivery and Lean Management Make your DevOps Amazeballs
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
 

Similar to Trunk Based Development Explored

Trunk Based Development Demystified
Trunk Based Development DemystifiedTrunk Based Development Demystified
Trunk Based Development Demystified
Carlos Lopes
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011
Wildtech
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based Development
Wildtech
 
DVCS branching (with mercurial)
DVCS branching (with mercurial)DVCS branching (with mercurial)
DVCS branching (with mercurial)
David Vega
 

Similar to Trunk Based Development Explored (20)

Trunk Based Development Demystified
Trunk Based Development DemystifiedTrunk Based Development Demystified
Trunk Based Development Demystified
 
Tbd demystified agiles2011
Tbd demystified agiles2011Tbd demystified agiles2011
Tbd demystified agiles2011
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
 
Bate-papo Trunk Based Development
Bate-papo Trunk Based DevelopmentBate-papo Trunk Based Development
Bate-papo Trunk Based Development
 
Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1Neo4j Stored Procedure Training Part 1
Neo4j Stored Procedure Training Part 1
 
React & Flux Workshop
React & Flux WorkshopReact & Flux Workshop
React & Flux Workshop
 
Hadoop and Marklogic: Using the Genetic Algorithm to generate Source Code
Hadoop and Marklogic: Using the Genetic Algorithm to generate Source CodeHadoop and Marklogic: Using the Genetic Algorithm to generate Source Code
Hadoop and Marklogic: Using the Genetic Algorithm to generate Source Code
 
DVCS branching (with mercurial)
DVCS branching (with mercurial)DVCS branching (with mercurial)
DVCS branching (with mercurial)
 
Bazaar for Mere Mortals
Bazaar for Mere MortalsBazaar for Mere Mortals
Bazaar for Mere Mortals
 
Why gradle
Why gradle Why gradle
Why gradle
 
Java 10 - Key Note
Java 10 - Key NoteJava 10 - Key Note
Java 10 - Key Note
 
CONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter HlavatyCONFidence 2015: when something overflowing... - Peter Hlavaty
CONFidence 2015: when something overflowing... - Peter Hlavaty
 
When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowing
 
Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)Apache Maven supports all Java (JokerConf 2018)
Apache Maven supports all Java (JokerConf 2018)
 
How to build your query engine in spark
How to build your query engine in sparkHow to build your query engine in spark
How to build your query engine in spark
 
Distributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialDistributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With Mercurial
 
Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster Javaone - Gradle: Harder, Better, Stronger, Faster
Javaone - Gradle: Harder, Better, Stronger, Faster
 
Refactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 RecapRefactoring to Scala DSLs and LiftOff 2009 Recap
Refactoring to Scala DSLs and LiftOff 2009 Recap
 
Maven in mulesoft - part 2
Maven in mulesoft - part 2Maven in mulesoft - part 2
Maven in mulesoft - part 2
 
Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)Apache Maven supports ALL Java (Javaland 2019)
Apache Maven supports ALL Java (Javaland 2019)
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Trunk Based Development Explored