SlideShare a Scribd company logo
Subversion Tricode Professional Services www.tricode.nl 22-08-2008 Patrick van Dissel
Index What is Subversion (SVN)? Subversion features Repository based versioning Metadata Properties Distinction Between Status and Update Conflict Resolution Updates and Commits are Separate Standard project structure Development/Release workflow Tips
An improved version of CVS Uses a filesystem   tree; everything works the same way, everything is versioned (files, directories, renames, deletions, properties, …) Branches and Tags work exactly the same as the Trunk, everything has it’s place in the repository filesystem tree Repositories/Modules can connect to each other, like a symbolic-link in a *nix filesystem A revision contains a complete state of the repository filesystem tree Minimized network traffic only connects to the repository when really needed tranfers are based on differences between versions instead of sending whole files What is Subversion (SVN)?
Terms of how they improve upon CVS's design Directory versioning CVS only tracks the history of individual files, but Subversion implements a “virtual” versioned filesystem that tracks changes to whole directory trees over time. Files  and  directories are versioned True version history Since CVS is limited to file versioning, operations such as copies and renames—which might happen to files, but which are really changes to the contents of some containing directory—aren't supported in CVS. Additionally, in CVS you cannot replace a versioned file with some new thing of the same name without the new item inheriting the history of the old—perhaps completely unrelated—file. With Subversion, you can add, delete, copy, and rename both files and directories. And every newly added file begins with a fresh, clean history all its own Versioned metadata Each file and directory has a set of properties—keys and their values—associated with it. You can create and store any arbitrary key/value pairs you wish. Properties are versioned over time, just like file contents Subversion features (1)
Terms of how they improve upon CVS's design Atomic commits A collection of modifications either goes into the repository completely, or not at all. This allows developers to construct and commit changes as logical chunks, and prevents problems that can occur when only a portion of a set of changes is successfully sent to the repository Consistent data handling Subversion expresses file differences using a binary differencing algorithm, which works identically on both text (human-readable) and binary (human-unreadable) files. Both types of files are stored equally compressed in the repository, and differences are transmitted in both directions across the network Efficient branching and tagging The cost of branching and tagging need not be proportional to the project size. Subversion creates branches and tags by simply copying the project, using a mechanism similar to a hard-link. Thus these operations take only a very small, constant amount of time Subversion features (2)
Repository based versioning A revision contains a complete state of the repository filesystem tree Revision numbering => CVS uses file based versioning, SVN uses repository based versioning. Metadata properties svn:ignore *.tmp svn:ignore ~* svn:keywords Id rev.2 svn:ignore *.tmp svn:keywords Id rev.1
Metadata Properties CVS uses  .cvsignore  files containing patterns of files/directories to exclude from CVS. In SVN, every file and directory can have metadata properties. SVN recognizes the following special  properties but will store any arbitrary properties set: svn:ignore svn:keywords URL, HeadURL Author, LastChangedBy Date, LastChangedDate Rev, Revision, LastChangedRevision Id svn:executable svn:eol-style One of 'native', 'LF', 'CR', 'CRLF‘ svn:mime-type svn:externals svn:needs-lock   If present, indicates that the file should be locked before it is modified Note: The svn:keywords, svn:executable, svn:eol-style, svn:mime-type and svn:needs-lock properties cannot be set on a directory. A non-recursive attempt will fail.
Metadata Properties – Usage (1) svn:ignore A newline separated list of file patterns to ignore For example: svn ps svn:ignore * cache This excludes all files within the cache directory from adding to  SVN. Files still can be added by specifically adding them svn:keywords Keywords to be expanded (case-sensitive!) For example: svn ps -R svn:keywords Id . This sets the ‘Id’ keyword on all files recursively from current  directory. After this, ‘$Id$’ will be replaced at commit with  information of the last modification and looks something like:   $Id: calc.c 148 2006-07-28 21:30:43Z sally $
Metadata Properties – Usage (2) svn:externals A newline separated list of module specifiers For example:   Zend  http://svn.tri...work/tags/1.5.2-tricode/library/Zend/   Tricode  http://svn.tri.../tricode/branches/1.1/library/Tricode/ This connects the Zend directory to the specified 1.5.2-tricode  repository and the Tricode directory to specified 1.1 branch. When you  update  your whole project, the externals will also be updated . When you  commit  your while project, the externals will  NOT be committed . Commits to externals must be done  explicitly.
One of the fundamental rules of Subversion is that a “push” action does not cause a “pull”, nor the other way around. Just because you're ready to commit new changes to the repository doesn't mean you're ready to receive changes from other people And if you have new changes still in progress, then  svn update  should gracefully merge repository changes into your own, rather than forcing you to publish them  Updates and Commits are Separate
svn status Shows only information about current working-copy without needing to connect to the repository. Unless you specify the -u option, then the reposity is contacted to recieve update information (files are  not  updated!) svn update Updates current working-copy to the latest/given revision and shows information about the files that are updated Distinction Between Status and Update
Steps for merging: Open the project/working-copy you want to merge changes to For merging the ‘trunk’ to ‘cycle18’ branche, you open the ‘cycle18’ branche and then execute the ` svn merge ` on the { trunk url } Make shure you have NO local modifications (`svn status`) Execute merge Solve conflicts & mark resolved Commit changes to complete merge Merging
{projectname} branches => specific development versions tags => released versions trunk => latest development version Naming convention For branches: YYYY-MM-DD_ I ##### YYYY-MM-DD_ RFS ### YYYY-MM-DD_ RFC ### YYYY-MM-DD_ cycle ## For tags: YYYY-MM-DD_ cycle ## Standard project structure
{projectname} branches 2008-08-18_ cycle 18 2008-08-19_ I 7654321 2008-08-19_ RFC 0012345 2008-08-19_RFC0022386 2008-08-19_ RFS 0012345 tags 2008-08-18_ cycle 17 trunk Standard project structure
Development/Release workflow FA TA Build UAT 1 week 1 week 1 week 1 week trunk (prod + incidents/rfs) GoLive After GoLive previous cycle Create cycle branch Merge to cycle Merge to cycle NOK Fix NOK RFC Branch Create branch per Change Build Changes Decide which Changes will go in the release Tag Clean branches
Development/Release workflow symbolic-link switcher cron Auto remove branches which are not in HEAD SVN revision symbolic-link trunk ../trunk ../b1 ../trunk ../b1 ../ixxx /virtual/{project} /virtual/{project} /virtual/{project} LIVE TEST DEV
Use JIRA issue keys in commit messages If a commit is resolving an issue from the issue tracker, the issue KEY should be indicated in the commit comment (i.e. "This resolves  ZF-2 ") Enable SVN Auto-props in SVN client config Config can be found at: %UserProfile%\Application Data\Subversion\config Set the following in the config: enable-auto-props = yes [auto-props] *.php = svn:keywords=Id  Tips

More Related Content

PDF
Source Code Management with Git
Things Lab
 
ODP
Source Code Management systems
xSawyer
 
PDF
Git vs Subversion: ¿Cuando elegir uno u otro?
Paradigma Digital
 
ODP
Git vs svn
Suman Mukherjee
 
ODP
Subversion User Guide
Muthuselvam RS
 
KEY
Basic Git
Knut Haugen
 
PPTX
01 - Git vs SVN
Edward Goikhman
 
PPTX
Git for a newbie
Anuj Sharma
 
Source Code Management with Git
Things Lab
 
Source Code Management systems
xSawyer
 
Git vs Subversion: ¿Cuando elegir uno u otro?
Paradigma Digital
 
Git vs svn
Suman Mukherjee
 
Subversion User Guide
Muthuselvam RS
 
Basic Git
Knut Haugen
 
01 - Git vs SVN
Edward Goikhman
 
Git for a newbie
Anuj Sharma
 

What's hot (20)

PPTX
Branch Management in Git Fusion
Perforce
 
PPT
Learn Git Basics
Prakash Dantuluri
 
PPTX
Subversion proper renaming and merging as if you’ve read the whole code of co...
Fazreil Amreen Abdul Jalil
 
PDF
Getting modern with my sql
Jakob Lorberblatt
 
PDF
Git 101
Dimitris Tsironis
 
ODP
Dockerized ROS Package
Parham Nikdouz
 
PPTX
Git-ing out of your git messes
Katie Sylor-Miller
 
PDF
Fluentd and PHP
chobi e
 
PPTX
Git - Basic Crash Course
Nilay Binjola
 
PDF
Collaborative development with Git | Workshop
Anuchit Chalothorn
 
PDF
Git vs. Mercurial
Marian Marinov
 
ODP
The Fundamentals of Git
DivineOmega
 
PDF
Git tutorial
Elli Kanal
 
PDF
3 technical-dns-workshop-day2
DNS Entrepreneurship Center
 
PPTX
SVN Information
RAHUL TRIPATHI
 
PDF
Git for the absolute beginners
Gabriele Baldassarre
 
PPTX
Getting Started with Docker
Geeta Vinnakota
 
PPTX
Container Monitoring with Sysdig
Sreenivas Makam
 
PDF
Git - Get Ready To Use It
Daniel Kummer
 
Branch Management in Git Fusion
Perforce
 
Learn Git Basics
Prakash Dantuluri
 
Subversion proper renaming and merging as if you’ve read the whole code of co...
Fazreil Amreen Abdul Jalil
 
Getting modern with my sql
Jakob Lorberblatt
 
Dockerized ROS Package
Parham Nikdouz
 
Git-ing out of your git messes
Katie Sylor-Miller
 
Fluentd and PHP
chobi e
 
Git - Basic Crash Course
Nilay Binjola
 
Collaborative development with Git | Workshop
Anuchit Chalothorn
 
Git vs. Mercurial
Marian Marinov
 
The Fundamentals of Git
DivineOmega
 
Git tutorial
Elli Kanal
 
3 technical-dns-workshop-day2
DNS Entrepreneurship Center
 
SVN Information
RAHUL TRIPATHI
 
Git for the absolute beginners
Gabriele Baldassarre
 
Getting Started with Docker
Geeta Vinnakota
 
Container Monitoring with Sysdig
Sreenivas Makam
 
Git - Get Ready To Use It
Daniel Kummer
 
Ad

Viewers also liked (15)

PPTX
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
Gracy Joseph
 
PDF
Versioning for Developers
Michelangelo van Dam
 
ODP
Git: Git'ing the Basic
Gerald Villorente
 
PPTX
Git Workflow Practice
Andy Wang
 
PDF
Git, an Illustrated Primer
Daniel Cousineau
 
PPTX
Git flow workflow example
Samúel Jón Gunnarsson
 
PPT
Git workflow libre semikov
Inna Kravchenko
 
PPTX
Workflows using Git GitHub | Edureka
Edureka!
 
PDF
Git workflow in agile development
Zack Siri
 
PPTX
Introducing Git to your FTP workflow
Roman Rus
 
PDF
A painless git workflow
rogthefrog
 
PDF
CI with Gitlab & Docker
Joerg Henning
 
PDF
Git workflow step by step
Binh Quan Duc
 
PDF
Version Control with SVN
PHPBelgium
 
PDF
Using GitLab CI
ColCh
 
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
Gracy Joseph
 
Versioning for Developers
Michelangelo van Dam
 
Git: Git'ing the Basic
Gerald Villorente
 
Git Workflow Practice
Andy Wang
 
Git, an Illustrated Primer
Daniel Cousineau
 
Git flow workflow example
Samúel Jón Gunnarsson
 
Git workflow libre semikov
Inna Kravchenko
 
Workflows using Git GitHub | Edureka
Edureka!
 
Git workflow in agile development
Zack Siri
 
Introducing Git to your FTP workflow
Roman Rus
 
A painless git workflow
rogthefrog
 
CI with Gitlab & Docker
Joerg Henning
 
Git workflow step by step
Binh Quan Duc
 
Version Control with SVN
PHPBelgium
 
Using GitLab CI
ColCh
 
Ad

Similar to Subversion (20)

PDF
Version control with GIT
Zeeshan Khan
 
PPT
SVN Tool Information : Best Practices
Maidul Islam
 
PPT
SVN Usage & Best Practices
Ashraf Fouad
 
PPT
Subversion Overview
polarion
 
PPT
Subversion (SVN)
manugoel2003
 
ODP
Burlington, VT PHP Users Group Subversion Presentation
Bradley Holt
 
PPTX
Mercurial presentation
dotNETUserGroupDnipro
 
PPT
Subversion on .Unix
Trong Dinh
 
PPT
Subversion on .Unix
Trong Dinh
 
PPT
Part 4 - Managing your svn repository using jas forge
Jasmine Conseil
 
PPT
Subversion
wiradikusuma
 
PDF
How to use CVS applied to SOLab
Pablo Arriazu
 
ODP
Practical SVN for PHP Developers
Lorna Mitchell
 
PPT
Introduction to Subversion and Google Project Hosting
Philip Johnson
 
PPTX
Subversion
Vaibhav Sakhalkar
 
PDF
Svn workflow
Nont Banditwong
 
PPT
SVN session from PiTechnologies
PiTechnologies
 
PPTX
Git hub_pptx
PathanNadhiyaSulthan
 
PDF
Subversion Best Practices
Matt Wood
 
PDF
Version control with Subversion
O. R. Kumaran
 
Version control with GIT
Zeeshan Khan
 
SVN Tool Information : Best Practices
Maidul Islam
 
SVN Usage & Best Practices
Ashraf Fouad
 
Subversion Overview
polarion
 
Subversion (SVN)
manugoel2003
 
Burlington, VT PHP Users Group Subversion Presentation
Bradley Holt
 
Mercurial presentation
dotNETUserGroupDnipro
 
Subversion on .Unix
Trong Dinh
 
Subversion on .Unix
Trong Dinh
 
Part 4 - Managing your svn repository using jas forge
Jasmine Conseil
 
Subversion
wiradikusuma
 
How to use CVS applied to SOLab
Pablo Arriazu
 
Practical SVN for PHP Developers
Lorna Mitchell
 
Introduction to Subversion and Google Project Hosting
Philip Johnson
 
Subversion
Vaibhav Sakhalkar
 
Svn workflow
Nont Banditwong
 
SVN session from PiTechnologies
PiTechnologies
 
Git hub_pptx
PathanNadhiyaSulthan
 
Subversion Best Practices
Matt Wood
 
Version control with Subversion
O. R. Kumaran
 

More from Tricode (part of Dept) (20)

PDF
The Top Benefits of Magnolia CMS’s Inspirational Open Suite Ideology
Tricode (part of Dept)
 
PPTX
Agile QA 2017: A New Hope
Tricode (part of Dept)
 
PDF
Mobile Sensor Networks based on Smartphone devices and Web Services
Tricode (part of Dept)
 
PPTX
Keeping Your Clients Happy and Your Management Even Happier
Tricode (part of Dept)
 
PDF
Intro to JHipster
Tricode (part of Dept)
 
PDF
Porn, the leading influencer of Technology
Tricode (part of Dept)
 
PDF
De 4 belangrijkste risicofactoren van het nearshoring proces
Tricode (part of Dept)
 
PDF
Internet Addiction (Social Media Edition)
Tricode (part of Dept)
 
PPTX
Kids Can Code - an interactive IT workshop
Tricode (part of Dept)
 
PPTX
RESTful API - Best Practices
Tricode (part of Dept)
 
PDF
Deep Learning - STM 6
Tricode (part of Dept)
 
PDF
How Technology is Affecting Society - STM 6
Tricode (part of Dept)
 
ODP
Monolithic to Microservices Architecture - STM 6
Tricode (part of Dept)
 
PDF
Customers speak on Magnolia CMS
Tricode (part of Dept)
 
PDF
Quality Nearshoring met Tricode
Tricode (part of Dept)
 
PDF
AEM Digital Assets Management - What's new in 6.2?
Tricode (part of Dept)
 
PDF
10 nearshoring it trends om in 2016 te volgen
Tricode (part of Dept)
 
PDF
Tricode & Magnolia
Tricode (part of Dept)
 
PDF
Why you should use Adobe Experience Manager Mobile
Tricode (part of Dept)
 
PDF
Introducing: Tricode's Software Factory
Tricode (part of Dept)
 
The Top Benefits of Magnolia CMS’s Inspirational Open Suite Ideology
Tricode (part of Dept)
 
Agile QA 2017: A New Hope
Tricode (part of Dept)
 
Mobile Sensor Networks based on Smartphone devices and Web Services
Tricode (part of Dept)
 
Keeping Your Clients Happy and Your Management Even Happier
Tricode (part of Dept)
 
Intro to JHipster
Tricode (part of Dept)
 
Porn, the leading influencer of Technology
Tricode (part of Dept)
 
De 4 belangrijkste risicofactoren van het nearshoring proces
Tricode (part of Dept)
 
Internet Addiction (Social Media Edition)
Tricode (part of Dept)
 
Kids Can Code - an interactive IT workshop
Tricode (part of Dept)
 
RESTful API - Best Practices
Tricode (part of Dept)
 
Deep Learning - STM 6
Tricode (part of Dept)
 
How Technology is Affecting Society - STM 6
Tricode (part of Dept)
 
Monolithic to Microservices Architecture - STM 6
Tricode (part of Dept)
 
Customers speak on Magnolia CMS
Tricode (part of Dept)
 
Quality Nearshoring met Tricode
Tricode (part of Dept)
 
AEM Digital Assets Management - What's new in 6.2?
Tricode (part of Dept)
 
10 nearshoring it trends om in 2016 te volgen
Tricode (part of Dept)
 
Tricode & Magnolia
Tricode (part of Dept)
 
Why you should use Adobe Experience Manager Mobile
Tricode (part of Dept)
 
Introducing: Tricode's Software Factory
Tricode (part of Dept)
 

Recently uploaded (20)

PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
The Future of AI & Machine Learning.pptx
pritsen4700
 

Subversion

  • 1. Subversion Tricode Professional Services www.tricode.nl 22-08-2008 Patrick van Dissel
  • 2. Index What is Subversion (SVN)? Subversion features Repository based versioning Metadata Properties Distinction Between Status and Update Conflict Resolution Updates and Commits are Separate Standard project structure Development/Release workflow Tips
  • 3. An improved version of CVS Uses a filesystem tree; everything works the same way, everything is versioned (files, directories, renames, deletions, properties, …) Branches and Tags work exactly the same as the Trunk, everything has it’s place in the repository filesystem tree Repositories/Modules can connect to each other, like a symbolic-link in a *nix filesystem A revision contains a complete state of the repository filesystem tree Minimized network traffic only connects to the repository when really needed tranfers are based on differences between versions instead of sending whole files What is Subversion (SVN)?
  • 4. Terms of how they improve upon CVS's design Directory versioning CVS only tracks the history of individual files, but Subversion implements a “virtual” versioned filesystem that tracks changes to whole directory trees over time. Files and directories are versioned True version history Since CVS is limited to file versioning, operations such as copies and renames—which might happen to files, but which are really changes to the contents of some containing directory—aren't supported in CVS. Additionally, in CVS you cannot replace a versioned file with some new thing of the same name without the new item inheriting the history of the old—perhaps completely unrelated—file. With Subversion, you can add, delete, copy, and rename both files and directories. And every newly added file begins with a fresh, clean history all its own Versioned metadata Each file and directory has a set of properties—keys and their values—associated with it. You can create and store any arbitrary key/value pairs you wish. Properties are versioned over time, just like file contents Subversion features (1)
  • 5. Terms of how they improve upon CVS's design Atomic commits A collection of modifications either goes into the repository completely, or not at all. This allows developers to construct and commit changes as logical chunks, and prevents problems that can occur when only a portion of a set of changes is successfully sent to the repository Consistent data handling Subversion expresses file differences using a binary differencing algorithm, which works identically on both text (human-readable) and binary (human-unreadable) files. Both types of files are stored equally compressed in the repository, and differences are transmitted in both directions across the network Efficient branching and tagging The cost of branching and tagging need not be proportional to the project size. Subversion creates branches and tags by simply copying the project, using a mechanism similar to a hard-link. Thus these operations take only a very small, constant amount of time Subversion features (2)
  • 6. Repository based versioning A revision contains a complete state of the repository filesystem tree Revision numbering => CVS uses file based versioning, SVN uses repository based versioning. Metadata properties svn:ignore *.tmp svn:ignore ~* svn:keywords Id rev.2 svn:ignore *.tmp svn:keywords Id rev.1
  • 7. Metadata Properties CVS uses .cvsignore files containing patterns of files/directories to exclude from CVS. In SVN, every file and directory can have metadata properties. SVN recognizes the following special properties but will store any arbitrary properties set: svn:ignore svn:keywords URL, HeadURL Author, LastChangedBy Date, LastChangedDate Rev, Revision, LastChangedRevision Id svn:executable svn:eol-style One of 'native', 'LF', 'CR', 'CRLF‘ svn:mime-type svn:externals svn:needs-lock If present, indicates that the file should be locked before it is modified Note: The svn:keywords, svn:executable, svn:eol-style, svn:mime-type and svn:needs-lock properties cannot be set on a directory. A non-recursive attempt will fail.
  • 8. Metadata Properties – Usage (1) svn:ignore A newline separated list of file patterns to ignore For example: svn ps svn:ignore * cache This excludes all files within the cache directory from adding to SVN. Files still can be added by specifically adding them svn:keywords Keywords to be expanded (case-sensitive!) For example: svn ps -R svn:keywords Id . This sets the ‘Id’ keyword on all files recursively from current directory. After this, ‘$Id$’ will be replaced at commit with information of the last modification and looks something like: $Id: calc.c 148 2006-07-28 21:30:43Z sally $
  • 9. Metadata Properties – Usage (2) svn:externals A newline separated list of module specifiers For example: Zend http://svn.tri...work/tags/1.5.2-tricode/library/Zend/ Tricode http://svn.tri.../tricode/branches/1.1/library/Tricode/ This connects the Zend directory to the specified 1.5.2-tricode repository and the Tricode directory to specified 1.1 branch. When you update your whole project, the externals will also be updated . When you commit your while project, the externals will NOT be committed . Commits to externals must be done explicitly.
  • 10. One of the fundamental rules of Subversion is that a “push” action does not cause a “pull”, nor the other way around. Just because you're ready to commit new changes to the repository doesn't mean you're ready to receive changes from other people And if you have new changes still in progress, then svn update should gracefully merge repository changes into your own, rather than forcing you to publish them Updates and Commits are Separate
  • 11. svn status Shows only information about current working-copy without needing to connect to the repository. Unless you specify the -u option, then the reposity is contacted to recieve update information (files are not updated!) svn update Updates current working-copy to the latest/given revision and shows information about the files that are updated Distinction Between Status and Update
  • 12. Steps for merging: Open the project/working-copy you want to merge changes to For merging the ‘trunk’ to ‘cycle18’ branche, you open the ‘cycle18’ branche and then execute the ` svn merge ` on the { trunk url } Make shure you have NO local modifications (`svn status`) Execute merge Solve conflicts & mark resolved Commit changes to complete merge Merging
  • 13. {projectname} branches => specific development versions tags => released versions trunk => latest development version Naming convention For branches: YYYY-MM-DD_ I ##### YYYY-MM-DD_ RFS ### YYYY-MM-DD_ RFC ### YYYY-MM-DD_ cycle ## For tags: YYYY-MM-DD_ cycle ## Standard project structure
  • 14. {projectname} branches 2008-08-18_ cycle 18 2008-08-19_ I 7654321 2008-08-19_ RFC 0012345 2008-08-19_RFC0022386 2008-08-19_ RFS 0012345 tags 2008-08-18_ cycle 17 trunk Standard project structure
  • 15. Development/Release workflow FA TA Build UAT 1 week 1 week 1 week 1 week trunk (prod + incidents/rfs) GoLive After GoLive previous cycle Create cycle branch Merge to cycle Merge to cycle NOK Fix NOK RFC Branch Create branch per Change Build Changes Decide which Changes will go in the release Tag Clean branches
  • 16. Development/Release workflow symbolic-link switcher cron Auto remove branches which are not in HEAD SVN revision symbolic-link trunk ../trunk ../b1 ../trunk ../b1 ../ixxx /virtual/{project} /virtual/{project} /virtual/{project} LIVE TEST DEV
  • 17. Use JIRA issue keys in commit messages If a commit is resolving an issue from the issue tracker, the issue KEY should be indicated in the commit comment (i.e. "This resolves ZF-2 ") Enable SVN Auto-props in SVN client config Config can be found at: %UserProfile%\Application Data\Subversion\config Set the following in the config: enable-auto-props = yes [auto-props] *.php = svn:keywords=Id  Tips