SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with SubversionGuy K. Kloss
 
SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best PracticesMaidul Islam
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With SubversionJordan Hatch
 
Software Quality Assurance on VLC
Software Quality Assurance on VLC Software Quality Assurance on VLC
Software Quality Assurance on VLC Shoaib Haseeb
 
Software Quality Assurance on VLC Player
Software Quality Assurance on VLC PlayerSoftware Quality Assurance on VLC Player
Software Quality Assurance on VLC PlayerShoaib Haseeb
 
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...Cyber Security Alliance
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practicesabackstrom
 
Version Control System
Version Control SystemVersion Control System
Version Control SystemTechAhead
 
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...Eric Smalling
 
Model For Applying Unit Test
Model For Applying Unit TestModel For Applying Unit Test
Model For Applying Unit TestHieu Le Trung
 
Automating development-operations-v1
Automating development-operations-v1Automating development-operations-v1
Automating development-operations-v1Sumanth Vepa
 
Release Notes
Release NotesRelease Notes
Release Notescosmeli
 

What's hot (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
 

Viewers also liked

ColdSpring the basics
ColdSpring the basicsColdSpring the basics
ColdSpring the basicsTed Steinmann
 
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 FactoryWSO2
 
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
 
Application Lifecycle management Utilizando ferramentas Microsoft
Application Lifecycle management Utilizando ferramentas MicrosoftApplication Lifecycle management Utilizando ferramentas Microsoft
Application Lifecycle management Utilizando ferramentas MicrosoftLuís Cesar Teodoro
 
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...Carlos Lopes
 
XP In the Real World
XP In the Real WorldXP In the Real World
XP In the Real WorldCarlos Lopes
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewCarlos Lopes
 
Refactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsRefactoring Strategies: Beyond the Basics
Refactoring Strategies: Beyond the BasicsDanilo Sato
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewLuca Minudel
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development ExploredCarlos Lopes
 
Web Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security AwarenessWeb Vulnerabilities - Building Basic Security Awareness
Web Vulnerabilities - Building Basic Security AwarenessGurpreet Luthra
 
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 IndiaGurpreet Luthra
 
Trunk Based Development
Trunk Based DevelopmentTrunk Based Development
Trunk Based DevelopmentCarlos Lopes
 
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 customerAnuar Nurmakanov
 
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 AmazeballsNicole Forsgren
 
Continuous Delivery: Making DevOps Awesome
Continuous Delivery: Making DevOps AwesomeContinuous Delivery: Making DevOps Awesome
Continuous Delivery: Making DevOps AwesomeNicole Forsgren
 
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 AbstractionChris Birchall
 
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!Carlos Lopes
 
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 rescueLeena N
 

Viewers also liked (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 to Basics of branching, tagging and packaging with SVN

Intro To Version Control
Intro To Version ControlIntro To Version Control
Intro To Version Controlceardach
 
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 PlatformCarlos Ramirez Martinez-Eiroa
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
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.0Jasmine Conseil
 
Building Scalable Development Environments
Building Scalable Development EnvironmentsBuilding Scalable Development Environments
Building Scalable Development EnvironmentsShahar Evron
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP DevelopersLorna Mitchell
 
Effective Software Release Management
Effective Software Release ManagementEffective Software Release Management
Effective Software Release ManagementMichael Degnan
 
Operations Support Workflow - Rundeck
Operations Support Workflow - RundeckOperations Support Workflow - Rundeck
Operations Support Workflow - RundeckNeil McCaughley
 
Brane.Storm
Brane.StormBrane.Storm
Brane.Stormkturgut
 
#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 mattersVincent Biret
 
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.0Jasmine Conseil
 
Software Deployment Principles & Practices
Software Deployment Principles & PracticesSoftware Deployment Principles & Practices
Software Deployment Principles & PracticesThyagarajan Krishnan
 
#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 #SPFxVincent Biret
 
Devops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentDevops - Continuous Integration And Continuous Development
Devops - Continuous Integration And Continuous DevelopmentSandyJohn5
 
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 applicationsRIA RUI Society
 

Similar to Basics of branching, tagging and packaging with SVN (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
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Basics of branching, tagging and packaging with SVN

  • 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