1www.cfunited.com
SUBVERSION FOR SMARTIESSUBVERSION FOR SMARTIESSUBVERSION FOR SMARTIESSUBVERSION FOR SMARTIES
Cameron Childress
2www.cfunited.com
IntroIntroIntroIntro
• ColdFusion, since 1996
• ACFUG since, 1998
• Foosball, since 2001
• Sumo Consulting, since 2002
3www.cfunited.com
Session DescriptionSession DescriptionSession DescriptionSession Description
So you know how to Branch and Tag, but you have a sneaky suspicion there is more you could be doing with SVN. Come find out what you've been missing out on and how to make Subversion do more for you!
4www.cfunited.com
PreviewPreviewPreviewPreview
• Review of SVN basics
• A few non-SVN things
• Interesting bits built into SVN
• External tools
• Some examples
5www.cfunited.com
Review: Key Advantages vs. VSS or CVSReview: Key Advantages vs. VSS or CVSReview: Key Advantages vs. VSS or CVSReview: Key Advantages vs. VSS or CVS
• SVN Server runs on many platforms• Many clients available for SVN• SVN is free & open source• Too many more to list…
6www.cfunited.com
•Subversion vs. Git – BasicsSubversion vs. Git – Basics•Subversion vs. Git – BasicsSubversion vs. Git – Basics
• Created by Linus Torvalds
• Replaced BitKeeper
• Used for Linux Kernel, PERL, RoR, Android OS
• Download at:http://git-scm.com
7www.cfunited.com
Subversion vs. Git – Git WinsSubversion vs. Git – Git WinsSubversion vs. Git – Git WinsSubversion vs. Git – Git Wins
• SVN is Centralized, Git is distributed• Local operations are faster• Branching Handling• Merge Handling• Smaller HD Footprint
(Mozilla 12 GiB in SVN, 420 MiB in Git)
8www.cfunited.com
Subversion vs Git – SVN WinsSubversion vs Git – SVN WinsSubversion vs Git – SVN WinsSubversion vs Git – SVN Wins
• Better IDE support• SVN has a de-facto single Repository• Centralized access control• Version numbers are easier in SVN
• Git / SVN Comparisonhttp://git.or.cz/gitwiki/GitSvnComparsion
9www.cfunited.com
Review: Subversion BasicsReview: Subversion BasicsReview: Subversion BasicsReview: Subversion Basics
• Conventional Project Structure• Branches• Tags• Trunk
• Typical Exposure:• Comit• Update• Resolve Conflicts• Branch / Merge (maybe)
10www.cfunited.com
Review: Key Subversion FeaturesReview: Key Subversion FeaturesReview: Key Subversion FeaturesReview: Key Subversion Features
• Revision numbers apply to entire tree• Directories are versioned• Working Copy vs. Repository• Caches pristine copy which allows
• Revert• Diff• Status
• Branches and tags are normal directories• Binary files are stored as difference data
11www.cfunited.com
Something New in SVN: ChangelistsSomething New in SVN: ChangelistsSomething New in SVN: ChangelistsSomething New in SVN: Changelists
• Introduced in SVN 1.5 (currently at 1.6)• Also a feature in Perforce• Groups files for operations:
• Commit• Diff
• Great for grouping files for bug resolution
12www.cfunited.com
Changelists – You Should KnowChangelists – You Should KnowChangelists – You Should KnowChangelists – You Should Know
• Part of working copy, not repository• Only works with files, not directories• One changelist assignment per file• Changelists cleared on commit
• Override using flag “--keep-changelists”
13www.cfunited.com
Changelist: How To – Command LineChangelist: How To – Command LineChangelist: How To – Command LineChangelist: How To – Command Line
• Syntax: svn changelist [listname] [filelist]
• Listname can be any string• Filelist supports wildcards
• More:http://svnbook.red-bean.com/nightly/en/svn.advanced.changelists.html
14www.cfunited.com
Changelist: How To – TortoiseChangelist: How To – TortoiseChangelist: How To – TortoiseChangelist: How To – Tortoise
• Example…
15www.cfunited.com
By the way: Perforce Also Has…By the way: Perforce Also Has…By the way: Perforce Also Has…By the way: Perforce Also Has…
• Labels• Similar to Tags, but not simply convention
• ClientSpecs• Maps repo / directories
• Together…• Very powerful for deployment• Great for large teams w/distributed roles
16www.cfunited.com
SVN PropertiesSVN PropertiesSVN PropertiesSVN Properties
• Think “metadata” for each file• Stored in .svn/props• Checked into repo with file• Versioned• Special Properties
• svn:ignore• svn:keywords• svn:needs-lock• svn:executable
17www.cfunited.com
Special SVN Property: svn:keywordsSpecial SVN Property: svn:keywordsSpecial SVN Property: svn:keywordsSpecial SVN Property: svn:keywords
• Used for keyword substitution• Must be explicitly turned on• svn:keywords
Date Revision Author HeadURL Id
• Example…
18www.cfunited.com
Automate Keyword SubstitutionAutomate Keyword SubstitutionAutomate Keyword SubstitutionAutomate Keyword Substitution
• Config file “miscellany” section• Applies to working copy, not repo• On windows, found in :
/%AppData%/Subversion
More:
http://svnbook.red-bean.com/nightly/en/
svn.advanced.props.special.keywords.html
19www.cfunited.com
HooksHooksHooksHooks
• Run a program at certain points in commit process
• Implemented as bat file in Windows• Live in repo, not working copy• Examples by default found in “repo/hooks”
http://svnbook.red-bean.com/nightly/en/
svn.reposadmin.create.html#svn.reposadmin.create.hooks
20www.cfunited.com
Hook TypesHook TypesHook TypesHook Types
• start-commit• pre-commit / post-commit• pre-revprop-change / post-revprop-change• pre-lock / post-lock• pre-unlock / post-unlock
21www.cfunited.com
Hooks: TipsHooks: TipsHooks: TipsHooks: Tips
• Hook programs execute with an empty environment
• Do not modify a commit transaction using hook scripts
• Permissions, permissions, permissions
22www.cfunited.com
Hooks: IdeasHooks: IdeasHooks: IdeasHooks: Ideas
• Push code to staging server• Send notification emails to dev team• Update issue / project management software
23www.cfunited.com
Resources for HooksResources for HooksResources for HooksResources for Hooks
• Brad Wood’s Bloghttp://www.codersrevolution.com/index.cfm/2008/9/15/Creating-a-postcommit-hook-for-Subversion
• Dan Switzer’s Bloghttp://blog.pengoworks.com/index.cfm/
2008/2/5/Debugging-Subversion-Repository-Hooks-in-Windows
24www.cfunited.com
Visual SVN ServerVisual SVN ServerVisual SVN ServerVisual SVN Server
• Windows installer (visualsvn.com)• Installs Apache based Service• HTTPS/SSL Capable• Internally @ SVN 1.6.4 (current) as of 8/12/09
• Take a Look…
25www.cfunited.com
SVN Abstration LayerSVN Abstration LayerSVN Abstration LayerSVN Abstration Layer
• Provides abstraction for RIA ForgeBy: Rob Gonda
• Configure via XML• Uses Apache by default, partial support for
SVNServe
• http://svnservice.riaforge.org/
26www.cfunited.com
SVN Abstraction LayerSVN Abstraction LayerSVN Abstraction LayerSVN Abstraction Layer
• Repositories Create, delete, list
• Users Create, delete, list, changepassword
• History List
27www.cfunited.com
SVN Abstraction Layer: Example CodeSVN Abstraction Layer: Example CodeSVN Abstraction Layer: Example CodeSVN Abstraction Layer: Example Code
svnService = createObject('component', 'models.svnService').init('config/config.xml');
svnService.listRepos();
svnService.create(‘myRepo);
svnService.getLog(‘myRepo', 10);
svnService.addUser(‘myRepo', ‘username', ‘password');
28www.cfunited.com
SVN SyncSVN SyncSVN SyncSVN Sync
• SVNSync – Repo BrowserBy: Tom de Manincor
• Configure via XML (X2)• config/environment.xml• model/svnAPI/config.xml
• http://svnsync.riaforge.org/
29www.cfunited.com
SVN SyncSVN SyncSVN SyncSVN Sync
• Let’s check it out…
30www.cfunited.com
Roundup: RIA Forge ProjectsRoundup: RIA Forge ProjectsRoundup: RIA Forge ProjectsRoundup: RIA Forge Projects
• Deployment builder - ANT/SVNBy: Matt Rileyhttp://deploymentbuilder.riaforge.org/
• Skweegee - TRAC + more(formerly Trac_Fu)By: Russ Johnsonhttp://skweegee.riaforge.org/
31www.cfunited.com
Roundup: RIA Forge ProjectsRoundup: RIA Forge ProjectsRoundup: RIA Forge ProjectsRoundup: RIA Forge Projects
• SVNAuthz.cfc – Manipulate authz filesBy: Terrance Ryanhttp://svnauthz.riaforge.org/
• SVNUtil – AIR App, Removes .svn infoBy: Omar Gonzalezhttp://svnutil.riaforge.org/
32www.cfunited.com
ResourcesResourcesResourcesResources
• Book - Version Control with Subversionhttp://svnbook.red-bean.com
• Windows Installer / Admin - VisualSVNhttp://www.visualsvn.com
33www.cfunited.com
Questions?Questions?Questions?Questions?
• Contact:• [email protected]• cameroncf (YIM / AIM)
• Presentation available NOW via:• USB Thumbdrive
http://www.sumoc.com/downloads/files/svn.zip
• Take the Survey:http://tinyurl.com/cfunitedsurvey
Recommended