SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Version Control with SVN
    by Michelangelo van Dam




 PHPBelgium meeting 22/10/2008
       Cafe Sport Leuven

                                 1
                                     1
About me
Michelangelo van Dam
Enterprise PHP Consultant
Zend Certified Engineer
Co-founder PHPBelgium
Contributor Zend Framework
PHP Advocate

E-mail: dragonbe@gmail.com
Blog: http://dragonbe.com
Twitter: http://twitter.com/DragonBe




                                       2
                                           2
About this presentation
• Concepts of version control
• Management with subversion
• Life cycle of a project in subversion
• Parts and structures within subversion
• Advanced subversion tools
• New in release 1.5




                                           3
                                               3
What is version control ?
“Revision control (also known as version
control ...) is the management of multiple
revisions of the same unit of information.”
(source: Wikipedia:RevisionControl)




                                              4
                                                  4
Version Control for PHP devs...
• version control provides
 – management of versions of information
   • code/tests
   • configuration files
   • documentation
 – in a structured, standardized way
 – with repositories
   • centralized (SVN, CVS)
   • decentralized (GIT)



                                           5
                                               5
Why need version control ?
• enables collaboration between developers
• centralized “main code” (trunk)
• custom code alongside main code (branching)
• eases release management (tags)
• rollback to previous revisions
• integration with other tools




                                                6
                                                    6
Subversion (SVN)
• Subversion (http://subversion.tigris.org)
• more advanced than CVS
• less complex than GIT
• integrates well with other tools
  (trac, gforge, jira, ...)
• supported by many tools
  (Zend Studio, TurtoiseSVN, Subversion CLI)



                                               7
                                                   7
An example project in trac




                             8
                                 8
SVN browser in Zend Studio




                             9
                                 9
Code management with SVN
• many developers create much code
• code is committed to a central repository
 – conflicts trigger warnings
• user and groups can be defined
• different versions can co-exist
• access management for named and
  anonymous access rights



                                              10
                                                   10
Subversion authentication
• svnserve daemon
  $ svn svn://server/project/trunk
• svnserve daemon over SSH
  $ svn svn+ssh://server/project/trunk
• Apache webserver
  http://svn.server/project/trunk




                                         11
                                              11
Version management
• all code resides in “trunk”
• code version are detached in “branches”
• snapshots for releases are “tagged”




                                            12
                                                 12
Release management

• a release is a snapshot of a version branch
• are being deployed to server environments
• for live or production environments
  don’t check out in document root !
 – use release folders
   svn co svn://server/myproj/tags/rel-1.0 /web/myproj-rel-1.0

 – create symlink to it
   ln -s /web/myproj-rel-1.0 /web/myproj




                                                             13
                                                                  13
SVN life cycle

                        custom dev branch

        v1.0 v1.1
Trunk
                                       bug fix

                           rel-1.1.1      rel-1.1.2

                    rel-1.0.1     rel-1.0.2


                                                      14
                                                           14
Trunk
• trunk is where all code resides
 – except custom development
• has always the latest version
• is not always the most stable version




                                          15
                                               15
Branch
• two kind of branches exists
 – custom development branches
 – version branches




                                 16
                                      16
Custom development
• code that changes many things in trunk
• are best put in a separate branch
• maintained by their developer(s)
• and merged back into trunk
 – after the merge, the branch is removed
• when changes are done and tested




                                            17
                                                 17
Versions
• are maintained in branches
• have a long lifetime cycle (several years)
• differ from each other
 – because of new code base, framework, language
• have a common base = trunk
• fixes from versions go into trunk
• back port fixes go from trunk into version


                                                   18
                                                        18
Tags
• tags are snapshots
• usually made on version branches
• can also be made on “trunk”
• are deployed (exported) to staging
  environments
• are used to keep track what’s happened
  between releases (change log)



                                           19
                                                19
More than just version control
• Subversion provides more features
 – File portability
 – Keyword substitution
 – Locking
 – Externals
 – Peg and Operative revisions
 – Network model
 – Hooks



                                      20
                                           20
File portability
• Line endings differ on different OSses
 – are ignored when checking modifications
• Mime-types differ from their extensions
 – binary and non-binary files are tested on content




                                                       21
                                                            21
Keyword substitution
• Only a few keywords are substitute
 – $Date:$ › $Date: 2008-10-22 20:00:00 +0100 (Wed,
   22 Oct 2008) $
 – $Revision:$ › $Revision: 144 $
 – $Author:$ › $Author: svnusername $
 – $HeadUrl:$ › $HeadUrl: http://svn.test.be/trunk $
 – $Id:$ › $Id: file.php 148 2008-10-22 20:00:00Z
   svnusername $



                                                       22
                                                            22
Locking
• working copy locks
 – exclusive right to a working copy
 – clears with “svn cleanup”
• database locks
 – ensures database integrity
 – only admins can remove this lock




                                       23
                                            23
Externals
• Externals provide an easy way to
 – include other internal or external projects
 – without having to care about there revisions
• Examples:
 – Zend Framework as svn:externals on library path
 – project that includes many smaller projects




                                                     24
                                                          24
Peg and Operative revisions
• automated handling of
 – moving files
 – deleting and creating new files with same name
• Using specific syntax
 – $ svn command -r OPERATIVE-REV item@PEG-REV




                                                    25
                                                         25
Network model
• Can run it’s own svnserve
 – pros: no dependencies, works with ssh for extra
   security
 – contras: need svnclient to connect
• Or in combination with Apache webserver
 – pros: works with any http-client
 – contras: overkill for small projects, requires
   mod_dav_svn, more difficult to set up



                                                     26
                                                          26
Hooks
• Hooks facilitate actions to be taken
 – before a commit starts (validate rights)
 – after a commit (send e-mail, update tracker, ...)
 – before or after a revision change (notifications)
• Can easily be incorporated with tools
 – tracking tools
 – integration tools (Lorna Jane’s Nabaztag)
 – mailing and logging systems



                                                       27
                                                            27
Hooks execute moments
• basic commit moments:
 – start-commit:
    • runs before commit transaction started
 – pre-commit:
    • runs right before commit transaction is promoted
 – post-commit:
    • runs after the commit transaction is finished
 – ...



                                                         28
                                                              28
Cool things with SVN hooks
   Lorna Jane’s Nabaztag

                     Responding on SVN commits




http://www.flickr.com/photos/lornajane/2592602734/



                                                     29
                                                          29
New features in Subversion v1.5
• Merge tracking (foundational)
• Sparse checkouts (via new --depth option)
• Interactive conflict resolution
• Changelist support
• Relative URLs, peg revisions in svn:externals
• Cyrus SASL support for ra_svn and svnserve
• ... (more on http://subversion.tigris.org/
  svn_1.5_releasenotes.html)

                                                  30
                                                       30
Summary
• manageable file change history
• better collaboration between developers
• clearer release management
• more then one version of same code base
• easier to rollback in case of emergency




                                            31
                                                 31
Thank you...


Questions ?
Michelangelo van Dam - dragonbe@gmail.com
http://slideshare.net/PHPBelgium/version-control-with-svn-presentation




                                                                         32
                                                                              32

Más contenido relacionado

La actualidad más candente

Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshareMorten Andersen-Gott
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow IntroductionDavid Paluy
 
Version Control System
Version Control SystemVersion Control System
Version Control Systemguptaanil
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction TutorialThomas Rausch
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Gitramubonkuri
 
UrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesUrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesIBM Rational software
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroupsKernel TLV
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control SystemKMS Technology
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - PrésentationDavid RIEHL
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell ScriptingRaghu nath
 

La actualidad más candente (20)

Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch   slideshareParallel batch processing with spring batch   slideshare
Parallel batch processing with spring batch slideshare
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Version Control System
Version Control SystemVersion Control System
Version Control System
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Git
 
UrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slidesUrbanCode Deploy course and product overview slides
UrbanCode Deploy course and product overview slides
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
 
Routage rip
Routage ripRoutage rip
Routage rip
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Git training v10
Git training v10Git training v10
Git training v10
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 
Advanced Namespaces and cgroups
Advanced Namespaces and cgroupsAdvanced Namespaces and cgroups
Advanced Namespaces and cgroups
 
Git flow
Git flowGit flow
Git flow
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
 
Bash Shell Scripting
Bash Shell ScriptingBash Shell Scripting
Bash Shell Scripting
 

Destacado

SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
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
 
Subversion Best Practices
Subversion Best PracticesSubversion Best Practices
Subversion Best PracticesMatt Wood
 
Introduction to Subversion
Introduction to SubversionIntroduction to Subversion
Introduction to SubversionAtul Jha
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overviewpolarion
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systemsTim Staley
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?Leonid Mamchenkov
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners HubSpot
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With SubversionJordan Hatch
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to gitJoel Krebs
 
Version Control With svn Setting The Stage
Version  Control With svn Setting The StageVersion  Control With svn Setting The Stage
Version Control With svn Setting The Stageparag
 
Part 4 - Managing your svn repository using jas forge
Part 4  - Managing your svn repository using jas forgePart 4  - Managing your svn repository using jas forge
Part 4 - Managing your svn repository using jas forgeJasmine Conseil
 
Code Management (Version Control)
Code Management (Version Control)Code Management (Version Control)
Code Management (Version Control)Y. Thong Kuah
 
Version Control != Dependency Management
Version Control != Dependency ManagementVersion Control != Dependency Management
Version Control != Dependency ManagementPatrick van Dissel
 
Apache contribution-bar camp-colombo
Apache contribution-bar camp-colomboApache contribution-bar camp-colombo
Apache contribution-bar camp-colomboSagara Gunathunga
 
Intro To Version Control
Intro To Version ControlIntro To Version Control
Intro To Version Controlceardach
 
Distributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialDistributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialTed Naleid
 
Introduction to Version Control System for Windows
Introduction to Version Control System for WindowsIntroduction to Version Control System for Windows
Introduction to Version Control System for WindowsPeter Chang
 

Destacado (20)

SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
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
 
Subversion Best Practices
Subversion Best PracticesSubversion Best Practices
Subversion Best Practices
 
Introduction to Subversion
Introduction to SubversionIntroduction to Subversion
Introduction to Subversion
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overview
 
Introduce to SVN
Introduce to SVNIntroduce to SVN
Introduce to SVN
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With Subversion
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
 
Version Control With svn Setting The Stage
Version  Control With svn Setting The StageVersion  Control With svn Setting The Stage
Version Control With svn Setting The Stage
 
Part 4 - Managing your svn repository using jas forge
Part 4  - Managing your svn repository using jas forgePart 4  - Managing your svn repository using jas forge
Part 4 - Managing your svn repository using jas forge
 
Code Management (Version Control)
Code Management (Version Control)Code Management (Version Control)
Code Management (Version Control)
 
Version Control != Dependency Management
Version Control != Dependency ManagementVersion Control != Dependency Management
Version Control != Dependency Management
 
Apache contribution-bar camp-colombo
Apache contribution-bar camp-colomboApache contribution-bar camp-colombo
Apache contribution-bar camp-colombo
 
Intro To Version Control
Intro To Version ControlIntro To Version Control
Intro To Version Control
 
Distributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialDistributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With Mercurial
 
Introduction to Version Control System for Windows
Introduction to Version Control System for WindowsIntroduction to Version Control System for Windows
Introduction to Version Control System for Windows
 

Similar a Version Control with SVN

PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVNLorna Mitchell
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchelldpc
 
Continuous Integration Step-by-step
Continuous Integration Step-by-stepContinuous Integration Step-by-step
Continuous Integration Step-by-stepMichelangelo van Dam
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemGilad Garon
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityBoy Tech
 
betterCode Workshop: Effizientes DevOps-Tooling mit Go
betterCode Workshop:  Effizientes DevOps-Tooling mit GobetterCode Workshop:  Effizientes DevOps-Tooling mit Go
betterCode Workshop: Effizientes DevOps-Tooling mit GoQAware GmbH
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Pursuit Consulting
 
Supporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStackSupporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStackDonal Lafferty
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Kurt Madel
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel developmentshalom938
 
Surviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studySurviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studypeter_ibuildings
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Dvcs With Mercurial (No Notes)
Dvcs With Mercurial (No Notes)Dvcs With Mercurial (No Notes)
Dvcs With Mercurial (No Notes)Ted Naleid
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control LandscapeLorna Mitchell
 
Mantis Code Deployment Process
Mantis Code Deployment ProcessMantis Code Deployment Process
Mantis Code Deployment ProcessJen Wei Lee
 

Similar a Version Control with SVN (20)

PHP Deployment With SVN
PHP Deployment With SVNPHP Deployment With SVN
PHP Deployment With SVN
 
Deployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna MitchellDeployment With Subversion - Lorna Mitchell
Deployment With Subversion - Lorna Mitchell
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
Continuous Integration Step-by-step
Continuous Integration Step-by-stepContinuous Integration Step-by-step
Continuous Integration Step-by-step
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control system
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team City
 
betterCode Workshop: Effizientes DevOps-Tooling mit Go
betterCode Workshop:  Effizientes DevOps-Tooling mit GobetterCode Workshop:  Effizientes DevOps-Tooling mit Go
betterCode Workshop: Effizientes DevOps-Tooling mit Go
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010
 
Supporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStackSupporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStack
 
Kubernetes Intro
Kubernetes IntroKubernetes Intro
Kubernetes Intro
 
Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015Atlanta Jenkins Area Meetup October 22nd 2015
Atlanta Jenkins Area Meetup October 22nd 2015
 
Dockerized maven
Dockerized mavenDockerized maven
Dockerized maven
 
Alm tce parallel development
Alm tce parallel developmentAlm tce parallel development
Alm tce parallel development
 
Surviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-studySurviving a Plane Crash, a NU.nl case-study
Surviving a Plane Crash, a NU.nl case-study
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Subversion and bug tracking
Subversion and bug trackingSubversion and bug tracking
Subversion and bug tracking
 
Dvcs With Mercurial (No Notes)
Dvcs With Mercurial (No Notes)Dvcs With Mercurial (No Notes)
Dvcs With Mercurial (No Notes)
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control Landscape
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
Mantis Code Deployment Process
Mantis Code Deployment ProcessMantis Code Deployment Process
Mantis Code Deployment Process
 

Último

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Último (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Version Control with SVN

  • 1. Version Control with SVN by Michelangelo van Dam PHPBelgium meeting 22/10/2008 Cafe Sport Leuven 1 1
  • 2. About me Michelangelo van Dam Enterprise PHP Consultant Zend Certified Engineer Co-founder PHPBelgium Contributor Zend Framework PHP Advocate E-mail: dragonbe@gmail.com Blog: http://dragonbe.com Twitter: http://twitter.com/DragonBe 2 2
  • 3. About this presentation • Concepts of version control • Management with subversion • Life cycle of a project in subversion • Parts and structures within subversion • Advanced subversion tools • New in release 1.5 3 3
  • 4. What is version control ? “Revision control (also known as version control ...) is the management of multiple revisions of the same unit of information.” (source: Wikipedia:RevisionControl) 4 4
  • 5. Version Control for PHP devs... • version control provides – management of versions of information • code/tests • configuration files • documentation – in a structured, standardized way – with repositories • centralized (SVN, CVS) • decentralized (GIT) 5 5
  • 6. Why need version control ? • enables collaboration between developers • centralized “main code” (trunk) • custom code alongside main code (branching) • eases release management (tags) • rollback to previous revisions • integration with other tools 6 6
  • 7. Subversion (SVN) • Subversion (http://subversion.tigris.org) • more advanced than CVS • less complex than GIT • integrates well with other tools (trac, gforge, jira, ...) • supported by many tools (Zend Studio, TurtoiseSVN, Subversion CLI) 7 7
  • 8. An example project in trac 8 8
  • 9. SVN browser in Zend Studio 9 9
  • 10. Code management with SVN • many developers create much code • code is committed to a central repository – conflicts trigger warnings • user and groups can be defined • different versions can co-exist • access management for named and anonymous access rights 10 10
  • 11. Subversion authentication • svnserve daemon $ svn svn://server/project/trunk • svnserve daemon over SSH $ svn svn+ssh://server/project/trunk • Apache webserver http://svn.server/project/trunk 11 11
  • 12. Version management • all code resides in “trunk” • code version are detached in “branches” • snapshots for releases are “tagged” 12 12
  • 13. Release management • a release is a snapshot of a version branch • are being deployed to server environments • for live or production environments don’t check out in document root ! – use release folders svn co svn://server/myproj/tags/rel-1.0 /web/myproj-rel-1.0 – create symlink to it ln -s /web/myproj-rel-1.0 /web/myproj 13 13
  • 14. SVN life cycle custom dev branch v1.0 v1.1 Trunk bug fix rel-1.1.1 rel-1.1.2 rel-1.0.1 rel-1.0.2 14 14
  • 15. Trunk • trunk is where all code resides – except custom development • has always the latest version • is not always the most stable version 15 15
  • 16. Branch • two kind of branches exists – custom development branches – version branches 16 16
  • 17. Custom development • code that changes many things in trunk • are best put in a separate branch • maintained by their developer(s) • and merged back into trunk – after the merge, the branch is removed • when changes are done and tested 17 17
  • 18. Versions • are maintained in branches • have a long lifetime cycle (several years) • differ from each other – because of new code base, framework, language • have a common base = trunk • fixes from versions go into trunk • back port fixes go from trunk into version 18 18
  • 19. Tags • tags are snapshots • usually made on version branches • can also be made on “trunk” • are deployed (exported) to staging environments • are used to keep track what’s happened between releases (change log) 19 19
  • 20. More than just version control • Subversion provides more features – File portability – Keyword substitution – Locking – Externals – Peg and Operative revisions – Network model – Hooks 20 20
  • 21. File portability • Line endings differ on different OSses – are ignored when checking modifications • Mime-types differ from their extensions – binary and non-binary files are tested on content 21 21
  • 22. Keyword substitution • Only a few keywords are substitute – $Date:$ › $Date: 2008-10-22 20:00:00 +0100 (Wed, 22 Oct 2008) $ – $Revision:$ › $Revision: 144 $ – $Author:$ › $Author: svnusername $ – $HeadUrl:$ › $HeadUrl: http://svn.test.be/trunk $ – $Id:$ › $Id: file.php 148 2008-10-22 20:00:00Z svnusername $ 22 22
  • 23. Locking • working copy locks – exclusive right to a working copy – clears with “svn cleanup” • database locks – ensures database integrity – only admins can remove this lock 23 23
  • 24. Externals • Externals provide an easy way to – include other internal or external projects – without having to care about there revisions • Examples: – Zend Framework as svn:externals on library path – project that includes many smaller projects 24 24
  • 25. Peg and Operative revisions • automated handling of – moving files – deleting and creating new files with same name • Using specific syntax – $ svn command -r OPERATIVE-REV item@PEG-REV 25 25
  • 26. Network model • Can run it’s own svnserve – pros: no dependencies, works with ssh for extra security – contras: need svnclient to connect • Or in combination with Apache webserver – pros: works with any http-client – contras: overkill for small projects, requires mod_dav_svn, more difficult to set up 26 26
  • 27. Hooks • Hooks facilitate actions to be taken – before a commit starts (validate rights) – after a commit (send e-mail, update tracker, ...) – before or after a revision change (notifications) • Can easily be incorporated with tools – tracking tools – integration tools (Lorna Jane’s Nabaztag) – mailing and logging systems 27 27
  • 28. Hooks execute moments • basic commit moments: – start-commit: • runs before commit transaction started – pre-commit: • runs right before commit transaction is promoted – post-commit: • runs after the commit transaction is finished – ... 28 28
  • 29. Cool things with SVN hooks Lorna Jane’s Nabaztag Responding on SVN commits http://www.flickr.com/photos/lornajane/2592602734/ 29 29
  • 30. New features in Subversion v1.5 • Merge tracking (foundational) • Sparse checkouts (via new --depth option) • Interactive conflict resolution • Changelist support • Relative URLs, peg revisions in svn:externals • Cyrus SASL support for ra_svn and svnserve • ... (more on http://subversion.tigris.org/ svn_1.5_releasenotes.html) 30 30
  • 31. Summary • manageable file change history • better collaboration between developers • clearer release management • more then one version of same code base • easier to rollback in case of emergency 31 31
  • 32. Thank you... Questions ? Michelangelo van Dam - dragonbe@gmail.com http://slideshare.net/PHPBelgium/version-control-with-svn-presentation 32 32