SlideShare a Scribd company logo
1 of 41
Download to read offline
Explorando o
Trunk Based Development
     Daniel Wildt       Carlos Lopes       Guilherme Lacerda
 Trevisan Tecnologia   ThoughtWorks         FACENSA/UniRitter
                                   TargetTrust/Surya Software Innovation
agenda

O Problema

Impactos

Possíveis soluções

Quando usar branches?
O problema
Diferentes linhas de desenvolvimento,
       mesma base de código
branches!
Ronald Widha
merge hell
Conflito Sintático

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
   }
}
Conflito Semântico

class BlaBlaBla {
   public void something(Bla bla) {
<<<<<<< HEAD
      bla = bla.plus(14);
=======
      bla = bla.minus(7);
>>>>>>> change
      //other stuff
   }
}
Conflitos de Integração
  main.jsp: <%@include file="bla.jspf" %>

master:               outroBranch:
new-file.jsp:         bla.jspf -> ble.jspf
<%@include
file="bla.jspf" %>    main.jsp:
                      <%@include
                      file="ble.jspf" %>
O Merge Man
Integração Promíscua




                   Martin Fowler
$$$$
Jon Wolter
Regressões
Jon Wolter
Jon Wolter
“The bigger the apparent
  reason to branch, the
   more you shouldn’t
        branch.”



                           Jez Humble
“don't separate differing
concerns by using a VCS, use
  an abstraction instead.”


                         Stacy Curl
branches por
controle de código?
Estratégias
Feature Toggles
Branch By Abstraction
big bang




           Paul Hammant
iterativo




            Paul Hammant
Mudanças pequenas
Releases frequentes
Componentes
Influência do Product
  Owner/Champion
Uncle Bob
Quando criar branches?

Grande mudanças

Spikes

Novo release
Quando criar branches?

Grande mudanças

Spikes

Novo release
Quando criar branches?

Grande mudanças

Spikes

Novo release
Paul Hammant
Mais Informações

www.codingbyexample.org
Obrigado!
Trunk Based Development (CBSoft 2011)

More Related Content

Viewers also liked

AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleWildtech
 
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioContinuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioMike Fotinakis
 
Pull requests and testers can be friends
Pull requests and testers can be friendsPull requests and testers can be friends
Pull requests and testers can be friendsAlan Parkinson
 
Entregas Contínuas com feature toggles
Entregas Contínuas com feature togglesEntregas Contínuas com feature toggles
Entregas Contínuas com feature togglessolon_aguiar
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deploymentsAndrei Tognolo
 
Who will test your tests?
Who will test your tests?Who will test your tests?
Who will test your tests?Yahya Poonawala
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentEero Laukkanen
 
Refactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkRefactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkGanesh Samarthyam
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature BranchingAlan Parkinson
 
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...Jonatan Mossberg
 
Feature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them BetterFeature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them BetterStephen Young
 
Strategies in continuous delivery
Strategies in continuous deliveryStrategies in continuous delivery
Strategies in continuous deliveryAviran Mordo
 
Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations LaunchDarkly
 
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 developmentLaunchDarkly
 
Feature Toggle XP Conference 2016 Kalpana Gulati
Feature Toggle  XP Conference 2016 Kalpana GulatiFeature Toggle  XP Conference 2016 Kalpana Gulati
Feature Toggle XP Conference 2016 Kalpana GulatiXP Conference India
 
Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Carlos Lopes
 

Viewers also liked (18)

AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By Example
 
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.ioContinuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
Continuous Visual Integration - RailsConf 2016 - Mike Fotinakis - Percy.io
 
Pull requests and testers can be friends
Pull requests and testers can be friendsPull requests and testers can be friends
Pull requests and testers can be friends
 
Entregas Contínuas com feature toggles
Entregas Contínuas com feature togglesEntregas Contínuas com feature toggles
Entregas Contínuas com feature toggles
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deployments
 
Who will test your tests?
Who will test your tests?Who will test your tests?
Who will test your tests?
 
Continuous Integration, Delivery and Deployment
Continuous Integration, Delivery and DeploymentContinuous Integration, Delivery and Deployment
Continuous Integration, Delivery and Deployment
 
Refactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech TalkRefactoring for Software Design Smells - Tech Talk
Refactoring for Software Design Smells - Tech Talk
 
Why we used Feature Branching
Why we used Feature BranchingWhy we used Feature Branching
Why we used Feature Branching
 
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
Requirement and Test for Continuous Delivery - Customer in focus at Scania Co...
 
Feature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them BetterFeature Flags Are Flawed: Let's Make Them Better
Feature Flags Are Flawed: Let's Make Them Better
 
Strategies in continuous delivery
Strategies in continuous deliveryStrategies in continuous delivery
Strategies in continuous delivery
 
Feature Toggles
Feature TogglesFeature Toggles
Feature Toggles
 
Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations Feature Flagging to Reduce Risk in Database Migrations
Feature Flagging to Reduce Risk in Database Migrations
 
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
 
Test Automation
Test AutomationTest Automation
Test Automation
 
Feature Toggle XP Conference 2016 Kalpana Gulati
Feature Toggle  XP Conference 2016 Kalpana GulatiFeature Toggle  XP Conference 2016 Kalpana Gulati
Feature Toggle XP Conference 2016 Kalpana Gulati
 
Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!
 

Similar to Trunk Based Development (CBSoft 2011)

Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGRLucas Brasilino
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...tdc-globalcode
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedswagnerlsrodrigues
 
Drupal - Um site com sua cara
Drupal - Um site com sua caraDrupal - Um site com sua cara
Drupal - Um site com sua carapedrofaria
 

Similar to Trunk Based Development (CBSoft 2011) (20)

Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Jboss7
Jboss7Jboss7
Jboss7
 
Git - Visão Geral
Git - Visão GeralGit - Visão Geral
Git - Visão Geral
 
JBoss5 @ FISL
JBoss5 @ FISLJBoss5 @ FISL
JBoss5 @ FISL
 
Plataforma Zope Plone na PGR
Plataforma Zope Plone na PGRPlataforma Zope Plone na PGR
Plataforma Zope Plone na PGR
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
 
Jboss tutorial
Jboss tutorialJboss tutorial
Jboss tutorial
 
Html5
Html5Html5
Html5
 
HTML5
HTML5HTML5
HTML5
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Oracle
OracleOracle
Oracle
 
Tutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazedsTutorial integrado flex_+_java_+_blazeds
Tutorial integrado flex_+_java_+_blazeds
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Drupal - Um site com sua cara
Drupal - Um site com sua caraDrupal - Um site com sua cara
Drupal - Um site com sua cara
 
Conheça o ASP.NET MVC 3
Conheça o ASP.NET MVC 3Conheça o ASP.NET MVC 3
Conheça o ASP.NET MVC 3
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 

More from Wildtech

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilWildtech
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareWildtech
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a AcademiaWildtech
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingWildtech
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TIWildtech
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureWildtech
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaWildtech
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...Wildtech
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsWildtech
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorWildtech
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm DebuggingWildtech
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme ProgrammingWildtech
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...Wildtech
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários ComplexosWildtech
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...Wildtech
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"Wildtech
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Wildtech
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)Wildtech
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleWildtech
 

More from Wildtech (20)

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágil
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de software
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a Academia
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coaching
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TI
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion Architecture
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching Patterns
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo Professor
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm Debugging
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By Example
 

Trunk Based Development (CBSoft 2011)