330 likes | 654 Views
Cameron Childress cameronc@sumoc.com. Subversion for Smarties. Intro. ColdFusion, since 1996 ACFUG since, 1998 Foosball, since 2001 Sumo Consulting, since 2002. Session Description.
E N D
Cameron Childress cameronc@sumoc.com Subversion for Smarties
Intro • ColdFusion, since 1996 • ACFUG since, 1998 • Foosball, since 2001 • Sumo Consulting, since 2002
Session 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!
Preview • Review of SVN basics • A few non-SVN things • Interesting bits built into SVN • External tools • Some examples
Review: 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…
Subversion vs. Git – Basics • Created by LinusTorvalds • Replaced BitKeeper • Used for Linux Kernel, PERL, RoR, Android OS • Download at:http://git-scm.com
Subversion 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)
Subversion vsGit – 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
Review: Subversion Basics • Conventional Project Structure • Branches • Tags • Trunk • Typical Exposure: • Comit • Update • Resolve Conflicts • Branch / Merge (maybe)
Review: 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
Something 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
Changelists – 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”
Changelist: How To – Command Line • Syntax: svnchangelist [listname] [filelist] • Listname can be any string • Filelist supports wildcards • More:http://svnbook.red-bean.com/nightly/en/svn.advanced.changelists.html
Changelist: How To – Tortoise • Example…
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
SVN 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
Special SVN Property: svn:keywords • Used for keyword substitution • Must be explicitly turned on • svn:keywords • Date • Revision • Author • HeadURL • Id • Example…
Automate 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
Hooks • 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
Hook Types • start-commit • pre-commit / post-commit • pre-revprop-change / post-revprop-change • pre-lock / post-lock • pre-unlock / post-unlock
Hooks: Tips • Hook programs execute with an empty environment • Do not modify a commit transaction using hook scripts • Permissions, permissions, permissions
Hooks: Ideas • Push code to staging server • Send notification emails to dev team • Update issue / project management software
Resources for Hooks • Brad Wood’s Bloghttp://www.codersrevolution.com/index.cfm/2008/9/15/Creating-a-postcommit-hook-for-Subversion • Dan Switzer’s Blog http://blog.pengoworks.com/index.cfm/2008/2/5/Debugging-Subversion-Repository-Hooks-in-Windows
Visual 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…
SVN Abstration Layer • Provides abstraction for RIA ForgeBy: Rob Gonda • Configure via XML • Uses Apache by default, partial support for SVNServe • http://svnservice.riaforge.org/
SVN Abstraction Layer • Repositories • Create, delete, list • Users • Create, delete, list, changepassword • History • List
SVN 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');
SVN Sync • SVNSync – Repo BrowserBy: Tom de Manincor • Configure via XML (X2) • config/environment.xml • model/svnAPI/config.xml • http://svnsync.riaforge.org/
SVN Sync • Let’s check it out…
Roundup: RIA Forge Projects • Deployment builder - ANT/SVNBy: Matt Rileyhttp://deploymentbuilder.riaforge.org/ • Skweegee - TRAC + more(formerly Trac_Fu)By: Russ Johnsonhttp://skweegee.riaforge.org/
Roundup: RIA Forge Projects • SVNAuthz.cfc – Manipulate authz filesBy: Terrance Ryanhttp://svnauthz.riaforge.org/ • SVNUtil – AIR App, Removes .svn infoBy: Omar Gonzalezhttp://svnutil.riaforge.org/
Resources • Book - Version Control with Subversionhttp://svnbook.red-bean.com • Windows Installer / Admin - VisualSVNhttp://www.visualsvn.com
Questions? • Contact: • cameronc@sumoc.com • cameroncf (YIM / AIM) • Presentation available NOW via: • USB Thumbdrive http://www.sumoc.com/downloads/files/svn.zip • Take the Survey:http://tinyurl.com/cfunitedsurvey