Subversionn Introduction at SuperMondays 2009-09-01
Upcoming SlideShare
Loading in...5
×
 

Subversionn Introduction at SuperMondays 2009-09-01

on

  • 1,964 views

A quick and dirty introduction to subversion that I gave at the SuperMondays event in Newcastle upon Tyne (UK) on Tuesday (!) 1st September 2009.

A quick and dirty introduction to subversion that I gave at the SuperMondays event in Newcastle upon Tyne (UK) on Tuesday (!) 1st September 2009.

Statistics

Views

Total Views
1,964
Views on SlideShare
1,959
Embed Views
5

Actions

Likes
1
Downloads
15
Comments
0

4 Embeds 5

https://www.linkedin.com 2
http://www.lmodules.com 1
http://www.slideshare.net 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • RCS = Revision Control System CVS = Concurrent Versions System
  • Windows Mac OSX Linux /*nix GUI and Command Line clients poperties on files (with auto properties) means that files can be native on each machine.

Subversionn Introduction at SuperMondays 2009-09-01 Subversionn Introduction at SuperMondays 2009-09-01 Presentation Transcript

  • Subversion Not that cool … Alex Kavanagh [email_address] @ajkavanagh
  • but very good
  • In the beginning there was RCS
  • and RCS begat CVS
  • and CVS begat SVN (sort of …)
  • The 80% VCS
  • http:// subversion .tigris.org/
  • or via yum,
  • or aptitude
  • or some other way (see the website!)
  • To learn it …
  • … get this book
  •  
  • “ Why use a Version Control System? ”
  • if you …
  • program
  • design web sites
  • write, or edit, text
  • then you are always …
  • making changes!
  • if you're not using a VCS
  • then HOW are you tracking those changes?
  • That's what subversion …
  • Git, Hg, Darcs, Bzr (and others) …
  • do
  •  
  • “ Why use Subversion ?”
  • DVCS are definitely cooler
  • Bzr
  • Lots of projects use svn
  • Most people don't 'get' DVCS
  • Branching and Tagging 'lose' most people
  • Corporates types like centralised repositories
  • = Subversion used everywhere (~30% of Open Source projects)
  • “ Subversion bits”
  • Cross Platform
  • Centralised Repository (Networked not decentralised)
  • Copies are cheap
  • Subversion tracks files and directories (even empty ones)
  • Revision Numbers are per repository
  • Files and Directories can have properties/meta-data
  • Important: Every commit goes to central repository
  • GUI Tools: Windows: TortoiseSVN Cross Platform: RapidSVN
  • Command Line: $ svn <command> args
  • Repository Schemes
  • $ svn co file ://home/alex/svnroot/repos/...
  • $ svn co svn ://server/repos/...
  • $ svn co svn+ssh ://server/repos/...
  • $ svn co http ://server/repos/...
  • Trunk, Branches and Tags
  • Subversion Convention: <project> - trunk |- branches – V1 |- tags - REL-1.0
  • Trunk: Normal Development
  • Branches: Bugs, Releases, Experiments
  • Tags: Release points (REL-1.0) Reference points (PRE-BUG-123)
  • Subversion uses '.svn/' directories (and litters them in each sub-directory)
  • “ A flavour of subversion” (Command Line!)
  • $ svn ls svn://devcentre/nxec/client error-page-plugin/ start-page/ test-usb/
  • $ mkdir test-usb $ cd test-usb/ $ svn co svn://devcentre/nxec/client/test-usb/trunk . A install.sh A test-usb.sh A report-usb.sh Checked out revision 304.
  • $ svn info Path: . URL: svn://devcentre/nxec/client/test-usb/trunk Repository Root: svn://devcentre Repository UUID: 91107793-f093-49fa-88a1-086c1fccaf20 Revision: 304 Node Kind: directory Schedule: normal Last Changed Author: dev Last Changed Rev: 210 Last Changed Date: 2009-08-10 11:15:24 +0100 (Mon, 10 Aug 2009)
  • $ touch README $ svn st ? README
  • $ svn add README A README
  • $ svn ci -m &quot;Added README file&quot; Adding README Transmitting file data . Committed revision 305. $ svn up At revision 305.
  • $ svn log ------------------------------------------------------------------------ r305 | dev | 2009-09-01 14:12:58 +0100 (Tue, 01 Sep 2009) | 1 line Added README file ------------------------------------------------------------------------ r297 | dev | 2009-08-28 10:07:55 +0100 (Fri, 28 Aug 2009) | 1 line renaming client-utils to client ------------------------------------------------------------------------ r210 | dev | 2009-08-10 11:15:24 +0100 (Mon, 10 Aug 2009) | 1 line Importing test-usb utils ------------------------------------------------------------------------
  • Importing a Project: $ cd <your unversioned project dir> $ svn import -m “project name” . svn://server/project/trunk $ mkdir <your versioned project dir> $ svn co svn://server/project/trunk
  • Importing a Project: $ cd <your unversioned project dir> $ svn import -m “project name” . svn://server/project/trunk $ mkdir <your versioned project dir> $ svn co svn://server/project/trunk
  • Importing a Project: $ cd <your unversioned project dir> $ svn import -m “project name” . svn://server/project/trunk $ mkdir <your versioned project dir> $ svn co svn://server/project/trunk
  • Importing a Project: $ cd <your unversioned project dir> $ svn import -m “project name” . svn://server/project/trunk $ mkdir <your versioned project dir> $ svn co svn://server/project/trunk
  • Creating a Branch: $ svn mkdir -m “Making branches” svn://server/project/branches $ cd copy -m “Making Release Branch” svn://server/project/trunk svn://server/project/branches/REL-1.0
  • Some Subversion features
  • Commits are true atomic operations
  • Renamed/copied/moved/removed files retain full revision history.
  • Versioning of symbolic links.
  • Native support for binary files, with space-efficient binary-diff storage
  • Branching and tagging are cheap operations, independent of file size Subversion itself does not distinguish between a tag, a branch, and a directory
  • File locking for unmergeable files (&quot;reserved checkouts&quot;)
  • &
  • if (like me) you like a DVCS like Git …
  • you can use Git with Subversion! git-svn (for when you have to use subversion)
  • Questions?