Trunk Based Development Explored

2,753 views

Published on

Trunk Based Development Explored, Agile Brazil 2011 - Fortaleza, CE

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

No Downloads
Views
Total views
2,753
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
44
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Trunk Based Development Explored

  1. 1. Trunk  Based  Development   Explored           Carlos  Lopes   Guilherme  Lacerda   ThoughtWorks   FACENSA/UniRi@er   TargetTrust/Surya  SoBware  InnovaEon  
  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. when  to  branch?        large  change      spikes    new  release        
  39. 39. when  to  branch?        large  change      spikes    new  release        
  40. 40. when  to  branch?        large  change      spikes    new  release        
  41. 41. Paul  Hammant  
  42. 42. branching  vs.  freezing  
  43. 43. more  info  www.codingbyexample.org  
  44. 44. thanks!  

×