Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Version Control for Continuous Delivery

3,112 views

Published on

Continuous delivery depends on the ability to deliver reliable software releases through build, test and deployment automation. This is often easier said than done, as it depends on a lot of hard work building a robust infrastructure to support the flow from development to production. One of these crucial tasks is to design a reliable, flexible, easy-to-use and easy-to-comprehend strategy for version control.

I have experienced many times that teams are not able to put new features, or even bug-fixes, into production within a reasonable amount of time (i. e. less than a day). The reason is often that their code base is unstable because they don't have a reasonable branching-, merging- and release strategy.

I will in this talk present an easy and comprehendible version control strategy that allows team members to develop a shared understanding of the branching and releasing processes. Teams not practicing continuous delivery will also find this model useful to avoid "merging hell", unstable code bases and the like. In the examples I give I will use Git, but any version control system supporting branching and merging, like SVN or CVS, could be used to implement the strategy.

Published in: Technology, Business
  • Be the first to comment

Version Control for Continuous Delivery

  1. 1. Version Control for Continuous Delivery<br />Roots 2011<br />Stein Inge Morisbak<br />
  2. 2. Our highest priority is to satisfy the customer<br />through early and continuous delivery<br />of valuable software.<br />
  3. 3. How long would it take your organization to deploy a change that involves just one single line of code?<br />Do you do this on a repeatable reliable basis?<br />- Mary and Tom Poppendieck<br />
  4. 4. Work in Progress (WiP)<br />F1<br />F2<br />F3<br />F4<br />F5<br />F6<br />F7<br />F8<br />F9<br />F10<br />Time<br />
  5. 5. We have to separate WiP from production ready code<br />Extra production release<br />Master<br />Initial production version<br />Next production release<br />Next production release<br />Bug!<br />Merge<br />Fix<br />Develop<br />F1<br />F2<br />F3<br />F4<br />F5<br />F6<br />F7<br />F8<br />F9<br />F9<br />Oh no!<br />Release plan 1<br />Release plan 2<br />Release plan 3<br />
  6. 6. We have to detach features from the release plans<br />Time<br />Master<br />Initial production version<br />Next production release<br />Next production release<br />Big bug!<br />!<br />Fix<br />Develop<br />F1<br />F4<br />F8<br />Feature branches<br />F2<br />F5<br />F7<br />F10<br />F3<br />F6<br />F9<br />
  7. 7. We have to detach hot-fixes from production and develop<br />Extra production release<br />Extra production release<br />Extra production release<br />Master<br />Initial production version<br />Next production release<br />Next production release<br />Big bug!<br />!<br />!<br />Big bug-fix<br />Hot-fix branches<br />!2<br />!1<br />Develop<br />F8<br />F4<br />F1<br />Feature branches<br />F7<br />F10<br />F5<br />F2<br />F6<br />F9<br />F3<br />
  8. 8. Code freezes, testing, preparation … - Release branches<br />Master<br />Initial production version<br />Next production release<br />Next production release<br />Next production release<br />!<br />Fix!<br />Hot-fix branches<br />Release 2<br />Release 3<br />Release 1<br />Release branches<br />Develop<br />F8<br />F4<br />F1<br />Feature branches<br />F7<br />F10<br />F5<br />F2<br />F6<br />F9<br />F3<br />
  9. 9. Summary<br />Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.<br />WiP must be separated from code in production.<br />Hot-fixes must happen on code in production<br />Release branches prevent freezes and delays.<br />For more on version control, come to:<br />“Delivering Continuously” on Wednesday.<br />Git cheat sheets.<br />Feature branching vs. Continuous Integration.<br />Avoiding BIG SCARY MERGES!<br />Feature toggles.<br />and a lot more …<br />
  10. 10. Stein Inge Morisbak<br />Manager<br />+47 909 64 372<br />stein.inge.morisbak@BEKK.no<br />@steinim<br />http://open.bekk.no<br />

×