SlideShare una empresa de Scribd logo
1 de 23
Basics of branching, tagging and packaging 
for 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
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? 
 Environmental 
Considerations 
 Branching 
 Strategies 
 Branching 
 Tagging 
 Versioning 
 Packaging 
 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 Considerations 
 Development 
 Alpha 
 Beta 
 Staging 
 Production 
 Source control server 
 SVN 
 Visual SVN 
 Source control client 
 Tortoise SVN 
 Build Script 
 Automated deployment 
Application 
Environments 
Supporting Environments & 
considerations
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 
 Serial Releases 
 The Stable Trunk 
 Parallel Releases 
Branching strategies can be 
intermingled, but choosing one and 
sticking with it creates transparency, 
simplicity, & consistency. 
Strategies are suggested usage or best 
practices but not enforced by 
subversion. 
 The Agile Branching Strategy 
 Delayed definition 
 Features that may never 
make it into the product 
All strategies support Agile 
development practices, agile 
branching supports more 
reactive undefined chaotic 
development and places 
more time & effort on 
branching & merging than 
development.
Unstable Trunk Strategy 
 Trunk 
 Main line development of a product 
 On going development for next release 
 Feature branch 
 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 
• Simplest most 
usable 
• Payload 
development 
• Serial development
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’s easier 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 
 Feature complete 
 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) 
 http://blogs.open.collab.net/svn/2007/11/branching-strat.html 
 Pragmatic version control using subversion 
 http://www.pragprog.com/titles/svn2/pragmatic-version-control-using-subversion 
 Tortoise SVN Docs 
 http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html 
 Wikipedia (Software Versioning) 
 http://en.wikipedia.org/wiki/Software_versioning 
 Collabnet SVN (download) 
 http://www.open.collab.net/downloads/subversion/ 
 Eclipse – ANT & External tools tutorial 
 http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.user/gettingStarted/qs- 
80_ant.htm 
 SVNKit (Java Library Integration – Jared Rypka-Hauer) 
 http://www.alagad.com/blog/post.cfm/svnkit-coldfusion-and-you--very-cool-java-cf-stuff

Más contenido relacionado

La actualidad más candente

SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
abackstrom
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
Sumanth Vepa
 
Release Notes
Release NotesRelease Notes
Release Notes
cosmeli
 

La actualidad más candente (20)

SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with Subversion
 
SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best Practices
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With Subversion
 
Software Quality Assurance on VLC
Software Quality Assurance on VLC Software Quality Assurance on VLC
Software Quality Assurance on VLC
 
Software Quality Assurance on VLC Player
Software Quality Assurance on VLC PlayerSoftware Quality Assurance on VLC Player
Software Quality Assurance on VLC Player
 
ASFWS 2013 - Advances in secure (ASP).NET development – break the hackers’ sp...
ASFWS 2013 - Advances in secure (ASP).NET development – break the hackers’ sp...ASFWS 2013 - Advances in secure (ASP).NET development – break the hackers’ sp...
ASFWS 2013 - Advances in secure (ASP).NET development – break the hackers’ sp...
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
2009-04-21 - Alfresco and Maven NXP case study
2009-04-21 - Alfresco and Maven NXP case study2009-04-21 - Alfresco and Maven NXP case study
2009-04-21 - Alfresco and Maven NXP case study
 
Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
 
Version Control System
Version Control SystemVersion Control System
Version Control System
 
Society Pro
Society ProSociety Pro
Society Pro
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
 
Subversion
SubversionSubversion
Subversion
 
Model For Applying Unit Test
Model For Applying Unit TestModel For Applying Unit Test
Model For Applying Unit Test
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1
 
TYPO3 & Composer
TYPO3 & ComposerTYPO3 & Composer
TYPO3 & Composer
 
About .net
About .net About .net
About .net
 
Release Notes
Release NotesRelease Notes
Release Notes
 
Svn tutorial
Svn tutorialSvn tutorial
Svn tutorial
 

Destacado

Accelerate Application development with WSO2 App Factory
 Accelerate Application development with WSO2 App Factory Accelerate Application development with WSO2 App Factory
Accelerate Application development with WSO2 App Factory
WSO2
 
Application Lifecycle Management using Microsoft Team Foundation Server Train...
Application Lifecycle Management using Microsoft Team Foundation Server Train...Application Lifecycle Management using Microsoft Team Foundation Server Train...
Application Lifecycle Management using Microsoft Team Foundation Server Train...
Mihails Galuška
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real World
Carlos Lopes
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
Carlos Lopes
 
Trunk Based Development
Trunk Based DevelopmentTrunk Based Development
Trunk Based Development
Carlos Lopes
 

Destacado (20)

ColdSpring the basics
ColdSpring the basicsColdSpring the basics
ColdSpring the basics
 
Accelerate Application development with WSO2 App Factory
 Accelerate Application development with WSO2 App Factory Accelerate Application development with WSO2 App Factory
Accelerate Application development with WSO2 App Factory
 
Application Lifecycle Management using Microsoft Team Foundation Server Train...
Application Lifecycle Management using Microsoft Team Foundation Server Train...Application Lifecycle Management using Microsoft Team Foundation Server Train...
Application Lifecycle Management using Microsoft Team Foundation Server Train...
 
Application Lifecycle management Utilizando ferramentas Microsoft
Application Lifecycle management Utilizando ferramentas MicrosoftApplication Lifecycle management Utilizando ferramentas Microsoft
Application Lifecycle management Utilizando ferramentas Microsoft
 
Multiple projects, different goals, one thing in common: the codebase! at Agi...
Multiple projects, different goals, one thing in common: the codebase! at Agi...Multiple projects, different goals, one thing in common: the codebase! at Agi...
Multiple projects, different goals, one thing in common: the codebase! at Agi...
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real World
 
Cognitive Biases
Cognitive BiasesCognitive Biases
Cognitive Biases
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
 
Refactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsRefactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the Basics
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
 
Web Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security AwarenessWeb Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security Awareness
 
Lessons from Deploying an EMR in Rural India
Lessons from Deploying an EMR in Rural IndiaLessons from Deploying an EMR in Rural India
Lessons from Deploying an EMR in Rural India
 
Trunk Based Development
Trunk Based DevelopmentTrunk Based Development
Trunk Based Development
 
TDD and more than 9000 tries to sell it to a customer
TDD and more than 9000 tries to sell it to a customerTDD and more than 9000 tries to sell it to a customer
TDD and more than 9000 tries to sell it to a customer
 
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
How Continuous Delivery and Lean Management Make your DevOps AmazeballsHow Continuous Delivery and Lean Management Make your DevOps Amazeballs
How Continuous Delivery and Lean Management Make your DevOps Amazeballs
 
Continuous Delivery: Making DevOps Awesome
Continuous Delivery: Making DevOps AwesomeContinuous Delivery: Making DevOps Awesome
Continuous Delivery: Making DevOps Awesome
 
Branching Strategies: Feature Branches vs Branch by Abstraction
Branching Strategies: Feature Branches vs Branch by AbstractionBranching Strategies: Feature Branches vs Branch by Abstraction
Branching Strategies: Feature Branches vs Branch by Abstraction
 
Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!Multiple projects, different goals, one thing in common: the codebase!
Multiple projects, different goals, one thing in common: the codebase!
 
Merge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescueMerge hells - Feature Toggles to the rescue
Merge hells - Feature Toggles to the rescue
 

Similar a Application versioning

Team Development & Continuous Integration on the Salesforce Platform
Team Development & Continuous Integration on the Salesforce PlatformTeam Development & Continuous Integration on the Salesforce Platform
Team Development & Continuous Integration on the Salesforce Platform
Carlos Ramirez Martinez-Eiroa
 
Building Scalable Development Environments
Building Scalable Development EnvironmentsBuilding Scalable Development Environments
Building Scalable Development Environments
Shahar Evron
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP Developers
Lorna Mitchell
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous Development
SandyJohn5
 

Similar a Application versioning (20)

Intro To Version Control
Intro To Version ControlIntro To Version Control
Intro To Version Control
 
Team Development & Continuous Integration on the Salesforce Platform
Team Development & Continuous Integration on the Salesforce PlatformTeam Development & Continuous Integration on the Salesforce Platform
Team Development & Continuous Integration on the Salesforce Platform
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Subversion
SubversionSubversion
Subversion
 
Using svn
Using svnUsing svn
Using svn
 
Building Scalable Development Environments
Building Scalable Development EnvironmentsBuilding Scalable Development Environments
Building Scalable Development Environments
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP Developers
 
Effective Software Release Management
Effective Software Release ManagementEffective Software Release Management
Effective Software Release Management
 
Operations Support Workflow - Rundeck
Operations Support Workflow - RundeckOperations Support Workflow - Rundeck
Operations Support Workflow - Rundeck
 
Brane.Storm
Brane.StormBrane.Storm
Brane.Storm
 
devops certification
devops certificationdevops certification
devops certification
 
devops certification
devops certificationdevops certification
devops certification
 
#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters#SPSToronto How to do #DevOps with #SPFx and why it matters
#SPSToronto How to do #DevOps with #SPFx and why it matters
 
ClearCase Basics
ClearCase BasicsClearCase Basics
ClearCase Basics
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Software Deployment Principles & Practices
Software Deployment Principles & PracticesSoftware Deployment Principles & Practices
Software Deployment Principles & Practices
 
#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx#ESPC19 How to do #DevOps with #SPFx
#ESPC19 How to do #DevOps with #SPFx
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous Development
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applications
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Application versioning

  • 1. Basics of branching, tagging and packaging for product release management with SVN Ted Steinmann APPLICATION VERSIONING
  • 2. 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
  • 3. 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.
  • 4. Summary  Why SVN?  Environmental Considerations  Branching  Strategies  Branching  Tagging  Versioning  Packaging  Publishing
  • 5. 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
  • 6. Environmental Considerations  Development  Alpha  Beta  Staging  Production  Source control server  SVN  Visual SVN  Source control client  Tortoise SVN  Build Script  Automated deployment Application Environments Supporting Environments & considerations
  • 7. 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
  • 8. Alpha Auto Update  DEMO  Code  post-commit-hook.bat  Environments  http://tsteinmann.samples/svn/project1/trunk/src/  http://tsteinmann.samples/svn/alpha/project1/
  • 9. 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
  • 10. Branching Strategies  The Unstable Trunk  Serial Releases  The Stable Trunk  Parallel Releases Branching strategies can be intermingled, but choosing one and sticking with it creates transparency, simplicity, & consistency. Strategies are suggested usage or best practices but not enforced by subversion.  The Agile Branching Strategy  Delayed definition  Features that may never make it into the product All strategies support Agile development practices, agile branching supports more reactive undefined chaotic development and places more time & effort on branching & merging than development.
  • 11. Unstable Trunk Strategy  Trunk  Main line development of a product  On going development for next release  Feature branch  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 • Simplest most usable • Payload development • Serial development
  • 13. 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’s easier to just create a branch from a branch (or the trunk) at a revision that lines corresponds to a tag.
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Packaging  DEMO  package.bat  build.xml
  • 19. Merging  Copy differences from between 2 trees, and applying to a working copy for commit  Feature Branch  Feature complete  Expected in next release  Release Branch  Merge when tagged  Apply hot fixes to on going dev in Trunk
  • 20. Merging (continued)  Range of revisions  Reintegrate Branch  Merge two different trees  DEMO – Time Permitting
  • 21. 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.
  • 23. Resources  Branching Strategy Questioned (Bob w/Collabnet)  http://blogs.open.collab.net/svn/2007/11/branching-strat.html  Pragmatic version control using subversion  http://www.pragprog.com/titles/svn2/pragmatic-version-control-using-subversion  Tortoise SVN Docs  http://tortoisesvn.net/docs/release/TortoiseSVN_en/index.html  Wikipedia (Software Versioning)  http://en.wikipedia.org/wiki/Software_versioning  Collabnet SVN (download)  http://www.open.collab.net/downloads/subversion/  Eclipse – ANT & External tools tutorial  http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.user/gettingStarted/qs- 80_ant.htm  SVNKit (Java Library Integration – Jared Rypka-Hauer)  http://www.alagad.com/blog/post.cfm/svnkit-coldfusion-and-you--very-cool-java-cf-stuff