Trunk Based Development Demystified

1,643 views
1,509 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,643
On SlideShare
0
From Embeds
0
Number of Embeds
696
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Trunk Based Development Demystified

  1. 1. Trunk  Based  Development   Demys4fied           Carlos  Lopes   Guilherme  Lacerda   ThoughtWorks   FACENSA/UniRiBer   TargetTrust/Surya  SoCware  Innova4on  
  2. 2. agenda  the  problem  impacts  solu2ons!  when  to  branch?  
  3. 3. the  problem  
  4. 4. different  streams,   same  codebase  
  5. 5. branches!  
  6. 6. Ronald  Widha  
  7. 7. merge  hell  
  8. 8. 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    }    }  
  9. 9. seman2c  conflict  class  BlaBlaBla  {      public  void  something(Bla  bla)  {  <<<<<<<  HEAD      bla  =  bla.plus(14);  =======      bla  =  bla.minus(7);  >>>>>>>  change      //other  stuff    }    }  
  10. 10. 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"  %>          
  11. 11. the  merge  man/monkey  
  12. 12. promiscuous  integra2on   Mar6n  Fowler  
  13. 13. $$$$  
  14. 14. Jon  Wolter  
  15. 15. regressions  
  16. 16. Jon  Wolter  
  17. 17. Jon  Wolter  
  18. 18. the  bigger  the  apparent  reason  to  branch,  the  more   you  shouldn’t  branch.   Jez  Humble  /  David  Farley  
  19. 19. dont  separate  differing  concerns  by  using  a  VCS,  use   an  abstrac6on  instead.   Stacy  Curl  
  20. 20. feature  branching  is  a  poor  mans  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  
  21. 21. all  right,  but  how  to solve  this?  
  22. 22. branch  by    source  control?  
  23. 23. there’s  hope!  
  24. 24. approaches  
  25. 25. hide  new  func2onality  
  26. 26. abstrac2on  
  27. 27. big  bang   Paul  Hammant  
  28. 28. itera2ve   Paul  Hammant  
  29. 29. small  releasable  changes  
  30. 30. componen2za2on  
  31. 31. enable  flow  across  teams  
  32. 32. KEEP  IT  ALWAYS  RELEASABLE  
  33. 33. KEEP  IT  ALWAYS  RELEASABLE  
  34. 34. CONTINUOUS  INTEGRATION  
  35. 35. CONTINUOUS  INTEGRATION  
  36. 36. program  level     product  owner/champion      knows  each  project  champion  and   how  to  reach  people  
  37. 37. Uncle  Bob  
  38. 38. but  when  to  branch?  
  39. 39. large  change    -­‐  headaches!    spikes  -­‐  if  you  throw  them  away    new  release  -­‐  hmm  
  40. 40. Paul  Hammant  
  41. 41. more  info  www.codingbyexample.org  
  42. 42. thanks!  

×