Trunk	  Based	  Development	            Demys4fied	         	                                	         	                   ...
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...
seman2c	  conflict	  class	  BlaBlaBla	  {	  	        	  public	  void	  something(Bla	  bla)	  {	  <<<<<<<	  HEAD	        ...
integra2on	  conflicts	       main.jsp:	  <%@include	  file="bla.jspf"	  %>	       	       	       	  master:	              ...
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. 	                        ...
dont	  separate	  differing	  concerns	  by	  using	  a	  VCS,	  use	    an	  abstrac6on	  instead. 	                      ...
feature	  branching	  is	  a	  poor	  mans	  modular	     architecture,	  instead	  of	  building	  systems	     with	  th...
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	  a...
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
Trunk Based Development Demystified
Trunk Based Development Demystified
Trunk Based Development Demystified
Trunk Based Development Demystified
Upcoming SlideShare
Loading in...5
×

Trunk Based Development Demystified

1,354

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,354
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
31
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!  
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×