Application versioning
Upcoming SlideShare
Loading in...5

Application versioning



TCCFUG presentation on

TCCFUG presentation on



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Application versioning Application versioning Presentation Transcript

  • Basics of branching, tagging and packagingfor product release management with SVN Ted Steinmann APPLICATION VERSIONING
  • About Me Building & Deploying CF Web apps for 4 years ImageTrend, Inc. Lead Developer  Employee 3+ years cf.Objective() attendee 3 years running MAX 2008 (San Francisco) Attendee Avid hiker, snowboarder & single-track rider Contact:   
  • Experience Involved, at some point, in most stages of the ColdFusion based development, design, implementation & support of large scale enterprise applications for ImageTrend’s Emergency Data Systems solutions  EMS, Fire, Trauma, Emergency Preparedness, Licensing Strong proponent of SVN, versioning and iterative release processes using the unstable branching strategy who has been involved with company wide implementation throughout various projects.
  • Summary Why SVN?  Branching Environmental  Tagging Considerations  Versioning Branching  Packaging Strategies  Publishing
  • Why SVN? Open source/free Widely used & supported  Many Eclipse plugins Supports  Remote disconnected development  Continuous/Synchronous development  Distributed Development Extendable integrations  Properties such as bug tracking id Atomic commits Project wide undue button
  • Environmental ConsiderationsApplication Supporting Environments &Environments considerations Development  Source control server Alpha  SVN Beta  Visual SVN Staging  Source control client  Tortoise SVN Production  Build Script  Automated deployment
  • Environmental Considerations Developers copy  Checkout – Trunk Alpha  Checkout – Trunk  Auto update – post-commit-hook Beta  Checkout – Release Branch or Trunk (switch) Staging or production  Export from tagged release
  • Alpha Auto Update DEMO  Code  post-commit-hook.bat  Environments  http://tsteinmann.samples/svn/project1/trunk/src/  http://tsteinmann.samples/svn/alpha/project1/
  • Branching Enables independent lines of development  Share a common history with the mainline/trunk  New feature development, release prep/management Isolated development environments Copy of another branch/trunk at a point in time
  • Branching Strategies The Unstable Trunk Branching strategies can be intermingled, but choosing one and  Serial Releases sticking with it creates transparency, simplicity, & consistency. The Stable Trunk Strategies are suggested usage or best practices but not enforced by  Parallel Releases subversion. All strategies support Agile The Agile Branching Strategy development practices, agile  Delayed definition branching supports more reactive undefined chaotic  Features that may never development and places more time & effort on make it into the product branching & merging than development.
  • Unstable Trunk Strategy Trunk • Simplest most  Main line development of a product usable • Payload  On going development for next release development Feature branch • Serial development  Safe place for development of features in isolation  Development delivered later, NOT for next release  Copy of branch (or Trunk) at a point in time Release Branch  Stable releasable/feature complete code set  created to prepare for release  Bug/defect fixes development performed or merged here  Tags are created from here
  • Unstable Trunk Diagram
  • Tagging Snap shot of a repository at a point in time  Commonly a version number  REL-1.0 A tag is effectively the same thing as a branch  Best practices suggest NEVER committing to a tag  Tortoise will warn you but not prevent You can tag a branch & branch a tag  It’seasier to just create a branch from a branch (or the trunk) at a revision that lines corresponds to a tag.
  • Versioning Wikipedia:  Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Generally numeric, and increasing order Every subsequent version contains all fixes & enhancements from previous versions Versioning needs to make sense for developers, marketing & existing customers
  • Packaging Gathering artifacts that make up a product  Source Code  Store version info in source code  Database scripts  Store version info in database  Write scripts to be re-runnable Repeatable process  Automated/Scripted build & delivery
  • Packaging (continued) ANT  Another Neat Tool  Built into Eclipse svn.exe  command line utility  CollabNet (one of many) SVNKit  Java Library Database script compilation or versioning
  • Packaging (continued) Steps 1. Compile database scripts 2. Export code from a tag 3. Strip out any un-necessary config or logs 4. Deliver package
  • Packaging DEMO  package.bat  build.xml
  • Merging Copy differences from between 2 trees, and applying to a working copy for commit Feature Branch  Featurecomplete  Expected in next release Release Branch  Merge when tagged  Apply hot fixes to on going dev in Trunk
  • Merging (continued) Range of revisions Reintegrate Branch Merge two different trees DEMO – Time Permitting
  • Pointers Merge as often as possible  The longer a branch exists in isolation the more difficult the merge KISS Do EVERYTHING from a working copy If you find yourself doing the same thing over and over… script it… most of us are developers.
  • Questions?
  • Resources Branching Strategy Questioned (Bob w/Collabnet)  Pragmatic version control using subversion  Tortoise SVN Docs  Wikipedia (Software Versioning)  Collabnet SVN (download)  Eclipse – ANT & External tools tutorial  80_ant.htm SVNKit (Java Library Integration – Jared Rypka-Hauer) 