SlideShare a Scribd company logo
1 of 16
SVN Best practices
www.dreamix.eu
Angel Gruev
Dreamix ltd
About Angel
Chief Technology Officer @Dreamix
● Software Architecture
● Project Management
● Oracle Technologies
● Education
● Bikes
● Snowboarding
Copy-modify-merge
The Problem: The solution:
www.dreamix.eu
SVN Revisions
❖ Commit – changes to the server state
❖ Every commit results in a new Revision
➢ Every revision has its unique identifier number
www.dreamix.eu
SVN Layout
❖ Typical (sane) repository layout
<Project Root> ( MyProjectName/)
- trunk
Contains the latest working (development) version
of the project.
- tags
Contains named revisions
- branches
Contains so called branches from the main development line.
www.dreamix.eu
Basic actions
● Checkout
● Commit
● Add
● Update
● Delete
● Revert
● Rename
● Merge
● Lock/Unlock
www.dreamix.eu
Merge using Tortoise SVN
www.dreamix.eu
Best practices
❖ Commit logical changesets
➢ make sure your change reflects a single purpose
❖ Use the issue-tracker wisely
➢ Two way links between SVN and issue-tracker
➢ If possible, refer to a specific issue ID in every commit log message.
➢ When appending information to an issue (to describe progress, or to close
the issue) name the revision number(s) responsible for the change.
❖ Always write a comment on your commit
❖ Trunk must be always compile-able and work-able
❖ SVN:ignore resulting artifact of the build process
➢ Classes/Bin directory
❖ Use standard coding formats
❖ Use SVN wisely to help you in multy-environment
(DEV, QA, UAT, PROD)
➢ Always tag every deployment and document it
www.dreamix.eu
Versioning of the
applciation
❖ Think of a good versioning number
➢ The X.Y.Z_Revision approach
➢ Change in X – Major change. Potential backward incompatibility
➢ Change in Y – Minor feature and bigfix is introduced
➢ Change in Z – Small changes, mostly bugfix releases
www.dreamix.eu
Branching
❖ The Never-Branch system
➢ Pros: Very easy policy to follow
➢ Cons: Chaotic development, code could be unstable at any time
❖ The Always-Branch System
➢ Pros: /trunk is guaranteed to be extremely stable at all times
➢ Cons: Requires users to do lots of extra merging.
❖ The Branch-When-Needed System
➢ Pros: /trunk is guaranteed to be stable at all times. The hassle of
branching/merging is somewhat rare.
➢ Cons: Adds a bit of burden to users' daily work: they must compile and
test before every commit
www.dreamix.eu
Common Branching
Patterns [1]
❖ Normal app lifecycle - code, test, release
➢ Developers keep writing new features while previous release is being
tested
➢ Support old releases
www.dreamix.eu
Common Branching
Patterns [1]
❖ Release branches
➢ Developers commit all new work to the trunk
➢ The trunk is copied to a “release” branch
➢ Teams continue to work in parallel
➢ The branch is tagged and released
➢ The branch is maintained over time
www.dreamix.eu
Common branching
patterns [2]
□ Feature Branches
■ It's a temporary branch created to work on a complex change without interfering with the stability of /trunk.
■ Feature branches are born, used for a while, merged back to the trunk, and then ultimately deleted
□ When do we create a feature branch
□ Regularly merge changes from trunk to the branch
www.dreamix.eu
Merging with TortoiseSVN
www.dreamix.eu
Merging with TortoiseSVN
□ Merge a range of revisions
www.dreamix.eu
Best practices [cont]
❖ Keep your SVN clean and tidy
➢ Delete branches that were successfully merged or reintegrated
❖ Use it to check differences between version
➢ Of the whole application
➢ Of a single resource or directory
❖ Very helpful for doing code reviews
www.dreamix.eu

More Related Content

What's hot

Oracle Data Protection - 2. část
Oracle Data Protection - 2. částOracle Data Protection - 2. část
Oracle Data Protection - 2. částMarketingArrowECS_CZ
 
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker ContainersKafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containersconfluent
 
MySQL Community and Commercial Edition
MySQL Community and Commercial EditionMySQL Community and Commercial Edition
MySQL Community and Commercial EditionMario Beck
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorSimon J Mudd
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detailMIJIN AN
 
Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Frederic Descamps
 
Windows internals
Windows internalsWindows internals
Windows internalsPiyush Jain
 
Oracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLONOracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLONMarkus Michalewicz
 
Domain driven design
Domain driven designDomain driven design
Domain driven designits_skm
 
Less05 asm instance
Less05 asm instanceLess05 asm instance
Less05 asm instanceAmit Bhalla
 
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZENorvald Ryeng
 
Optimizing Performance in Rust for Low-Latency Database Drivers
Optimizing Performance in Rust for Low-Latency Database DriversOptimizing Performance in Rust for Low-Latency Database Drivers
Optimizing Performance in Rust for Low-Latency Database DriversScyllaDB
 
Introduction to Raft algorithm
Introduction to Raft algorithmIntroduction to Raft algorithm
Introduction to Raft algorithmmuayyad alsadi
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the DisruptorTrisha Gee
 
Three Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityThree Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityDevOps.com
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignYoung-Ho Cho
 

What's hot (20)

Oracle Data Protection - 2. část
Oracle Data Protection - 2. částOracle Data Protection - 2. část
Oracle Data Protection - 2. část
 
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker ContainersKafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
Kafka Summit SF 2017 - Best Practices for Running Kafka on Docker Containers
 
nessus
nessusnessus
nessus
 
MySQL Community and Commercial Edition
MySQL Community and Commercial EditionMySQL Community and Commercial Edition
MySQL Community and Commercial Edition
 
What is Exception Handling?
What is Exception Handling?What is Exception Handling?
What is Exception Handling?
 
Power of the AWR Warehouse
Power of the AWR WarehousePower of the AWR Warehouse
Power of the AWR Warehouse
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and Orchestrator
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
 
Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?Galera Replication Demystified: How Does It Work?
Galera Replication Demystified: How Does It Work?
 
Oracle Data Masking
Oracle Data MaskingOracle Data Masking
Oracle Data Masking
 
Windows internals
Windows internalsWindows internals
Windows internals
 
Oracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLONOracle RAC 19c and Later - Best Practices #OOWLON
Oracle RAC 19c and Later - Best Practices #OOWLON
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Less05 asm instance
Less05 asm instanceLess05 asm instance
Less05 asm instance
 
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZEMySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
MySQL 8.0.18 latest updates: Hash join and EXPLAIN ANALYZE
 
Optimizing Performance in Rust for Low-Latency Database Drivers
Optimizing Performance in Rust for Low-Latency Database DriversOptimizing Performance in Rust for Low-Latency Database Drivers
Optimizing Performance in Rust for Low-Latency Database Drivers
 
Introduction to Raft algorithm
Introduction to Raft algorithmIntroduction to Raft algorithm
Introduction to Raft algorithm
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Three Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityThree Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking Observability
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 

Viewers also liked

PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVNLorna Mitchell
 
Nguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesNguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesVu Hung Nguyen
 
Subversion workshop
Subversion workshopSubversion workshop
Subversion workshopTrafeX
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With SubversionSamnang Chhun
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practicesabackstrom
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
ElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learnedElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learnedBeyondTrees
 

Viewers also liked (12)

Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
 
PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVN
 
Nguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesNguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practices
 
svn
svnsvn
svn
 
Subversion workshop
Subversion workshopSubversion workshop
Subversion workshop
 
SVN Basics
SVN BasicsSVN Basics
SVN Basics
 
Introduce to SVN
Introduce to SVNIntroduce to SVN
Introduce to SVN
 
05 - Merge Management
05 - Merge Management05 - Merge Management
05 - Merge Management
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
ElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learnedElasticSearch in Production: lessons learned
ElasticSearch in Production: lessons learned
 

Similar to SVN Best practices for managing code changes

Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Per Henrik Lausten
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life DevOps.com
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to knowdaveymni
 
Warden @ Meet magento Romania 2021
Warden @ Meet magento Romania 2021Warden @ Meet magento Romania 2021
Warden @ Meet magento Romania 2021alinalexandru
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.All Things Open
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdfAbid Malik
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release processBert Pareyn
 
Cloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsCloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsKasper Nissen
 
Introduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleIntroduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleSpringPeople
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
Lessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionLessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionShingo Omura
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins XFaithlin Paul
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
DevOps presentation
DevOps presentationDevOps presentation
DevOps presentationAxsh Co. LTD
 
It's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftIt's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftScyllaDB
 

Similar to SVN Best practices for managing code changes (20)

Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
Source Control with Domino Designer 8.5.3 and Git (DanNotes, November 28, 2012)
 
Explore asp.net core 3.0 features
Explore asp.net core 3.0 featuresExplore asp.net core 3.0 features
Explore asp.net core 3.0 features
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
 
Warden @ Meet magento Romania 2021
Warden @ Meet magento Romania 2021Warden @ Meet magento Romania 2021
Warden @ Meet magento Romania 2021
 
First Steps to DevOps
First Steps to DevOpsFirst Steps to DevOps
First Steps to DevOps
 
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
It’s 2021. Why are we -still- rebooting for patches? A look at Live Patching.
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
Apereo OAE development and release process
Apereo OAE development and release processApereo OAE development and release process
Apereo OAE development and release process
 
Cloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsCloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOps
 
Introduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeopleIntroduction To Jenkins - SpringPeople
Introduction To Jenkins - SpringPeople
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Lessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In ProductionLessons Learned: Using Concourse In Production
Lessons Learned: Using Concourse In Production
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
Dockerized maven
Dockerized mavenDockerized maven
Dockerized maven
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
DevOps presentation
DevOps presentationDevOps presentation
DevOps presentation
 
It's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with UnikraftIt's Time to Debloat the Cloud with Unikraft
It's Time to Debloat the Cloud with Unikraft
 

More from ESRI Bulgaria

The Art of Communication In IT Projects
The Art of Communication In IT ProjectsThe Art of Communication In IT Projects
The Art of Communication In IT ProjectsESRI Bulgaria
 
Oracle Business Intelligence Enterprise Edition
Oracle Business Intelligence Enterprise EditionOracle Business Intelligence Enterprise Edition
Oracle Business Intelligence Enterprise EditionESRI Bulgaria
 
Custom components in JSF
Custom components in JSFCustom components in JSF
Custom components in JSFESRI Bulgaria
 
What you Need to Know about Machine Learning?
What you Need to Know about Machine Learning?What you Need to Know about Machine Learning?
What you Need to Know about Machine Learning?ESRI Bulgaria
 
From Developer to Consultant
From Developer to ConsultantFrom Developer to Consultant
From Developer to ConsultantESRI Bulgaria
 
CrashCourse: XML technologies
CrashCourse: XML technologiesCrashCourse: XML technologies
CrashCourse: XML technologiesESRI Bulgaria
 
Architecture review vs Post Implementation Review
Architecture review vs Post Implementation ReviewArchitecture review vs Post Implementation Review
Architecture review vs Post Implementation ReviewESRI Bulgaria
 
How to Deliver a Successful Oracle BPM and SOA Suite Project
How to Deliver a Successful Oracle BPM and SOA Suite ProjectHow to Deliver a Successful Oracle BPM and SOA Suite Project
How to Deliver a Successful Oracle BPM and SOA Suite ProjectESRI Bulgaria
 
How blogs are affecting your company
How blogs are affecting your company How blogs are affecting your company
How blogs are affecting your company ESRI Bulgaria
 
Tips and tricks for the best user-friendly website
Tips and tricks for the best user-friendly website Tips and tricks for the best user-friendly website
Tips and tricks for the best user-friendly website ESRI Bulgaria
 
Solution for your employees satisfaction - A$4
Solution for your employees satisfaction - A$4 Solution for your employees satisfaction - A$4
Solution for your employees satisfaction - A$4 ESRI Bulgaria
 

More from ESRI Bulgaria (14)

Dreamix
Dreamix Dreamix
Dreamix
 
The Art of Communication In IT Projects
The Art of Communication In IT ProjectsThe Art of Communication In IT Projects
The Art of Communication In IT Projects
 
Oracle Business Intelligence Enterprise Edition
Oracle Business Intelligence Enterprise EditionOracle Business Intelligence Enterprise Edition
Oracle Business Intelligence Enterprise Edition
 
Arduino Basics
Arduino BasicsArduino Basics
Arduino Basics
 
Custom components in JSF
Custom components in JSFCustom components in JSF
Custom components in JSF
 
Single sign-on
Single sign-onSingle sign-on
Single sign-on
 
What you Need to Know about Machine Learning?
What you Need to Know about Machine Learning?What you Need to Know about Machine Learning?
What you Need to Know about Machine Learning?
 
From Developer to Consultant
From Developer to ConsultantFrom Developer to Consultant
From Developer to Consultant
 
CrashCourse: XML technologies
CrashCourse: XML technologiesCrashCourse: XML technologies
CrashCourse: XML technologies
 
Architecture review vs Post Implementation Review
Architecture review vs Post Implementation ReviewArchitecture review vs Post Implementation Review
Architecture review vs Post Implementation Review
 
How to Deliver a Successful Oracle BPM and SOA Suite Project
How to Deliver a Successful Oracle BPM and SOA Suite ProjectHow to Deliver a Successful Oracle BPM and SOA Suite Project
How to Deliver a Successful Oracle BPM and SOA Suite Project
 
How blogs are affecting your company
How blogs are affecting your company How blogs are affecting your company
How blogs are affecting your company
 
Tips and tricks for the best user-friendly website
Tips and tricks for the best user-friendly website Tips and tricks for the best user-friendly website
Tips and tricks for the best user-friendly website
 
Solution for your employees satisfaction - A$4
Solution for your employees satisfaction - A$4 Solution for your employees satisfaction - A$4
Solution for your employees satisfaction - A$4
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
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
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
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
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
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
 
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
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

SVN Best practices for managing code changes

  • 2. About Angel Chief Technology Officer @Dreamix ● Software Architecture ● Project Management ● Oracle Technologies ● Education ● Bikes ● Snowboarding
  • 3. Copy-modify-merge The Problem: The solution: www.dreamix.eu
  • 4. SVN Revisions ❖ Commit – changes to the server state ❖ Every commit results in a new Revision ➢ Every revision has its unique identifier number www.dreamix.eu
  • 5. SVN Layout ❖ Typical (sane) repository layout <Project Root> ( MyProjectName/) - trunk Contains the latest working (development) version of the project. - tags Contains named revisions - branches Contains so called branches from the main development line. www.dreamix.eu
  • 6. Basic actions ● Checkout ● Commit ● Add ● Update ● Delete ● Revert ● Rename ● Merge ● Lock/Unlock www.dreamix.eu
  • 7. Merge using Tortoise SVN www.dreamix.eu
  • 8. Best practices ❖ Commit logical changesets ➢ make sure your change reflects a single purpose ❖ Use the issue-tracker wisely ➢ Two way links between SVN and issue-tracker ➢ If possible, refer to a specific issue ID in every commit log message. ➢ When appending information to an issue (to describe progress, or to close the issue) name the revision number(s) responsible for the change. ❖ Always write a comment on your commit ❖ Trunk must be always compile-able and work-able ❖ SVN:ignore resulting artifact of the build process ➢ Classes/Bin directory ❖ Use standard coding formats ❖ Use SVN wisely to help you in multy-environment (DEV, QA, UAT, PROD) ➢ Always tag every deployment and document it www.dreamix.eu
  • 9. Versioning of the applciation ❖ Think of a good versioning number ➢ The X.Y.Z_Revision approach ➢ Change in X – Major change. Potential backward incompatibility ➢ Change in Y – Minor feature and bigfix is introduced ➢ Change in Z – Small changes, mostly bugfix releases www.dreamix.eu
  • 10. Branching ❖ The Never-Branch system ➢ Pros: Very easy policy to follow ➢ Cons: Chaotic development, code could be unstable at any time ❖ The Always-Branch System ➢ Pros: /trunk is guaranteed to be extremely stable at all times ➢ Cons: Requires users to do lots of extra merging. ❖ The Branch-When-Needed System ➢ Pros: /trunk is guaranteed to be stable at all times. The hassle of branching/merging is somewhat rare. ➢ Cons: Adds a bit of burden to users' daily work: they must compile and test before every commit www.dreamix.eu
  • 11. Common Branching Patterns [1] ❖ Normal app lifecycle - code, test, release ➢ Developers keep writing new features while previous release is being tested ➢ Support old releases www.dreamix.eu
  • 12. Common Branching Patterns [1] ❖ Release branches ➢ Developers commit all new work to the trunk ➢ The trunk is copied to a “release” branch ➢ Teams continue to work in parallel ➢ The branch is tagged and released ➢ The branch is maintained over time www.dreamix.eu
  • 13. Common branching patterns [2] □ Feature Branches ■ It's a temporary branch created to work on a complex change without interfering with the stability of /trunk. ■ Feature branches are born, used for a while, merged back to the trunk, and then ultimately deleted □ When do we create a feature branch □ Regularly merge changes from trunk to the branch www.dreamix.eu
  • 15. Merging with TortoiseSVN □ Merge a range of revisions www.dreamix.eu
  • 16. Best practices [cont] ❖ Keep your SVN clean and tidy ➢ Delete branches that were successfully merged or reintegrated ❖ Use it to check differences between version ➢ Of the whole application ➢ Of a single resource or directory ❖ Very helpful for doing code reviews www.dreamix.eu