SlideShare a Scribd company logo
SVN Best Practices
                              Derek Gallo - NFi Studios




Friday, November 7, 2008                                  1
Introduction
                           • What is version control?
                           •  Why use it?
                             • Revisions/Backup
                             • Logs
                             • Version/Release Management
                             • COLLABORATION


Friday, November 7, 2008                                    2
Basics

                           • Repository
                           • Checkout
                           • Commit
                           • Update
                           • Merge



Friday, November 7, 2008                           3
Basic Rules of Thumb

                           •   Comment, Comment, Comment

                           •   Update and TEST before Commit

                           •   Work from your own local copy

                           •   Commit small autonomous changes

                           •   Validate the files you are committing, you actually changed

                           •   Watch for Conflicts




Friday, November 7, 2008                                                                    4
SVN Clients

                           • Windows = TortoiseSVN
                           • *NIX = command line
                           • IDE Integration
                           • There is no complete replacement for the command
                             line. Learn how to use it.



Friday, November 7, 2008                                                        5
Starting a Project
                           •       Create the project folder structure

                               •       Trunk

                                   •     Main development location

                               •       Branches

                                   •     For temporary isolation or codebase splits.

                               •       Tags

                                   •     Snapshots of code at a given point in time




Friday, November 7, 2008                                                               6
Repository Layout
                           •       Single Project - One project per repository location.

                               •       Pros

                                   •     Isolated revision numbers

                                   •     Isolated codebase

                                   •     Isolated security model

                               •       Cons

                                   •     Isolated codebase

                                   •     Multiple Urls to remember

                                   •     Multiple locations to maintain




Friday, November 7, 2008                                                                   7
Repository Layout
                           •       Multi-Project Layout - Several projects in one repository

                               •       Pros

                                   •     Easy to merge code between projects

                                   •     Single url for all projects

                                   •     One repository to maintain

                               •       Cons

                                   •     Revision numbers span across all projects

                                   •     Harder to isolate users to appropriate repositories




Friday, November 7, 2008                                                                       8
Use SVN Properties
                           •       Link external libraries via svn externals

                               •      Easier to update libraries or change versions.

                               •      Helps enforce library separation

                               •      More granular security model

                           •       Use svn ignore appropriately

                               •      configurations files

                               •      os dependent files

                               •      IDE project files

                               •      User generated data

                               •      Temporary folders & logs




Friday, November 7, 2008                                                               9
Use Migrations

                           • They are not just for Rails
                           • Allows you to easily version your DB schema
                           • Doctrine for PHP supports migrations
                           • Be careful about migration numbers when committing

Friday, November 7, 2008                                                          10
Branching/Tagging

                           •   SVN and your development process/release cycle go hand in hand.

                           •   Tag the completion of every milestone/sprint

                           •   Create a tag for every version number

                           •   Create a tag for the latest production release

                           •   NEVER modify tags!




Friday, November 7, 2008                                                                         11
Branching/Tagging

                           •   Create Branches to isolate experimental work.

                           •   Create a Branch for every phase of your release cycle (QA, Staging, Beta, etc.)

                           •   Make necessary fixes/changes in branch and “merge down” to trunk

                           •   Keep branches for every released version

                           •   “Freeze” externals when moving to release branches




Friday, November 7, 2008                                                                                         12
Administration

                           • Apache mod_svn vs. svnserve
                           • Use SSL
                           • Use mod_authz
                           • Regular dumps to backup

Friday, November 7, 2008                                   13
Integrate w/ Project
                                         Management
                           •    Use software with SVN Browser
                               • Trac
                               • Unfuddle
                           • Log revision number in ticket updates
                           • Log ticket number in commit logs



Friday, November 7, 2008                                             14
Automation
                           • SVN Api and Hooks
                           • Policy enforcement using pre-commit
                           • Email notifications using post-commit
                           • Automate changelogs
                           • Track code-reviews using properties
                           • Automate Unit Tests at pre-commit


Friday, November 7, 2008                                            15
Additional Reading

                           •       Version Control With Subversion

                               •     O'Reilly Media.

                               •     http://svnbook.red-bean.com/

                           •       Subversion Version Control

                               •     by William Nagel

                               •     Prentice Hall




Friday, November 7, 2008                                             16

More Related Content

Viewers also liked

Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
Samnang Chhun
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overview
polarion
 

Viewers also liked (20)

Using svn
Using svnUsing svn
Using svn
 
Getting your open source company to contribution
Getting your open source company to contributionGetting your open source company to contribution
Getting your open source company to contribution
 
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
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overview
 
SVN Basics
SVN BasicsSVN Basics
SVN Basics
 
Subversion workshop
Subversion workshopSubversion workshop
Subversion workshop
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 
Enonic Content Repository built on elasticsearch
Enonic Content Repository built on elasticsearchEnonic Content Repository built on elasticsearch
Enonic Content Repository built on elasticsearch
 
SVN 2 Git
SVN 2 GitSVN 2 Git
SVN 2 Git
 
Elastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within INGElastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within ING
 
Changing Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven DevelopmentChanging Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven Development
 
Getting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.jsGetting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.js
 
Getting Started With Agile
Getting Started With AgileGetting Started With Agile
Getting Started With Agile
 
Tuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for LogsTuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for Logs
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
 
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch ServiceReal-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 

Svn Best Practices

  • 1. SVN Best Practices Derek Gallo - NFi Studios Friday, November 7, 2008 1
  • 2. Introduction • What is version control? • Why use it? • Revisions/Backup • Logs • Version/Release Management • COLLABORATION Friday, November 7, 2008 2
  • 3. Basics • Repository • Checkout • Commit • Update • Merge Friday, November 7, 2008 3
  • 4. Basic Rules of Thumb • Comment, Comment, Comment • Update and TEST before Commit • Work from your own local copy • Commit small autonomous changes • Validate the files you are committing, you actually changed • Watch for Conflicts Friday, November 7, 2008 4
  • 5. SVN Clients • Windows = TortoiseSVN • *NIX = command line • IDE Integration • There is no complete replacement for the command line. Learn how to use it. Friday, November 7, 2008 5
  • 6. Starting a Project • Create the project folder structure • Trunk • Main development location • Branches • For temporary isolation or codebase splits. • Tags • Snapshots of code at a given point in time Friday, November 7, 2008 6
  • 7. Repository Layout • Single Project - One project per repository location. • Pros • Isolated revision numbers • Isolated codebase • Isolated security model • Cons • Isolated codebase • Multiple Urls to remember • Multiple locations to maintain Friday, November 7, 2008 7
  • 8. Repository Layout • Multi-Project Layout - Several projects in one repository • Pros • Easy to merge code between projects • Single url for all projects • One repository to maintain • Cons • Revision numbers span across all projects • Harder to isolate users to appropriate repositories Friday, November 7, 2008 8
  • 9. Use SVN Properties • Link external libraries via svn externals • Easier to update libraries or change versions. • Helps enforce library separation • More granular security model • Use svn ignore appropriately • configurations files • os dependent files • IDE project files • User generated data • Temporary folders & logs Friday, November 7, 2008 9
  • 10. Use Migrations • They are not just for Rails • Allows you to easily version your DB schema • Doctrine for PHP supports migrations • Be careful about migration numbers when committing Friday, November 7, 2008 10
  • 11. Branching/Tagging • SVN and your development process/release cycle go hand in hand. • Tag the completion of every milestone/sprint • Create a tag for every version number • Create a tag for the latest production release • NEVER modify tags! Friday, November 7, 2008 11
  • 12. Branching/Tagging • Create Branches to isolate experimental work. • Create a Branch for every phase of your release cycle (QA, Staging, Beta, etc.) • Make necessary fixes/changes in branch and “merge down” to trunk • Keep branches for every released version • “Freeze” externals when moving to release branches Friday, November 7, 2008 12
  • 13. Administration • Apache mod_svn vs. svnserve • Use SSL • Use mod_authz • Regular dumps to backup Friday, November 7, 2008 13
  • 14. Integrate w/ Project Management • Use software with SVN Browser • Trac • Unfuddle • Log revision number in ticket updates • Log ticket number in commit logs Friday, November 7, 2008 14
  • 15. Automation • SVN Api and Hooks • Policy enforcement using pre-commit • Email notifications using post-commit • Automate changelogs • Track code-reviews using properties • Automate Unit Tests at pre-commit Friday, November 7, 2008 15
  • 16. Additional Reading • Version Control With Subversion • O'Reilly Media. • http://svnbook.red-bean.com/ • Subversion Version Control • by William Nagel • Prentice Hall Friday, November 7, 2008 16