Your SlideShare is downloading. ×
0
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  re...
$  svn info Path: . URL: svn://devcentre/nxec/client/test-usb/trunk Repository Root: svn://devcentre Repository UUID: 9110...
$ 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 re...
$  svn log ------------------------------------------------------------------------ r305 | dev | 2009-09-01 14:12:58 +0100...
Importing a Project: $  cd <your unversioned project dir> $ svn import -m “project name”  .  svn://server/project/trunk $ ...
Importing a Project: $  cd <your unversioned project dir> $  svn import -m “project name”  .  svn://server/project/trunk $...
Importing a Project: $  cd <your unversioned project dir> $  svn import -m “project name”  .  svn://server/project/trunk $...
Importing a Project: $  cd <your unversioned project dir> $  svn import -m “project name”  .  svn://server/project/trunk $...
Creating a Branch: $ svn mkdir -m “Making branches” svn://server/project/branches $  cd copy -m “Making Release Branch”  s...
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,...
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?
Upcoming SlideShare
Loading in...5
×

Subversionn Introduction at SuperMondays 2009-09-01

1,387

Published on

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

Published in: Technology, Spiritual
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,387
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • 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.
  • Transcript of "Subversionn Introduction at SuperMondays 2009-09-01"

    1. 1. Subversion Not that cool … Alex Kavanagh [email_address] @ajkavanagh
    2. 2. but very good
    3. 3. In the beginning there was RCS
    4. 4. and RCS begat CVS
    5. 5. and CVS begat SVN (sort of …)
    6. 6. The 80% VCS
    7. 7. http:// subversion .tigris.org/
    8. 8. or via yum,
    9. 9. or aptitude
    10. 10. or some other way (see the website!)
    11. 11. To learn it …
    12. 12. … get this book
    13. 14. “ Why use a Version Control System? ”
    14. 15. if you …
    15. 16. program
    16. 17. design web sites
    17. 18. write, or edit, text
    18. 19. then you are always …
    19. 20. making changes!
    20. 21. if you're not using a VCS
    21. 22. then HOW are you tracking those changes?
    22. 23. That's what subversion …
    23. 24. Git, Hg, Darcs, Bzr (and others) …
    24. 25. do
    25. 27. “ Why use Subversion ?”
    26. 28. DVCS are definitely cooler
    27. 29. Bzr
    28. 30. Lots of projects use svn
    29. 31. Most people don't 'get' DVCS
    30. 32. Branching and Tagging 'lose' most people
    31. 33. Corporates types like centralised repositories
    32. 34. = Subversion used everywhere (~30% of Open Source projects)
    33. 35. “ Subversion bits”
    34. 36. Cross Platform
    35. 37. Centralised Repository (Networked not decentralised)
    36. 38. Copies are cheap
    37. 39. Subversion tracks files and directories (even empty ones)
    38. 40. Revision Numbers are per repository
    39. 41. Files and Directories can have properties/meta-data
    40. 42. Important: Every commit goes to central repository
    41. 43. GUI Tools: Windows: TortoiseSVN Cross Platform: RapidSVN
    42. 44. Command Line: $ svn <command> args
    43. 45. Repository Schemes
    44. 46. $ svn co file ://home/alex/svnroot/repos/...
    45. 47. $ svn co svn ://server/repos/...
    46. 48. $ svn co svn+ssh ://server/repos/...
    47. 49. $ svn co http ://server/repos/...
    48. 50. Trunk, Branches and Tags
    49. 51. Subversion Convention: <project> - trunk |- branches – V1 |- tags - REL-1.0
    50. 52. Trunk: Normal Development
    51. 53. Branches: Bugs, Releases, Experiments
    52. 54. Tags: Release points (REL-1.0) Reference points (PRE-BUG-123)
    53. 55. Subversion uses '.svn/' directories (and litters them in each sub-directory)
    54. 56. “ A flavour of subversion” (Command Line!)
    55. 57. $ svn ls svn://devcentre/nxec/client error-page-plugin/ start-page/ test-usb/
    56. 58. $ 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.
    57. 59. $ 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)
    58. 60. $ touch README $ svn st ? README
    59. 61. $ svn add README A README
    60. 62. $ svn ci -m &quot;Added README file&quot; Adding README Transmitting file data . Committed revision 305. $ svn up At revision 305.
    61. 63. $ 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 ------------------------------------------------------------------------
    62. 64. 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
    63. 65. 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
    64. 66. 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
    65. 67. 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
    66. 68. 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
    67. 69. Some Subversion features
    68. 70. Commits are true atomic operations
    69. 71. Renamed/copied/moved/removed files retain full revision history.
    70. 72. Versioning of symbolic links.
    71. 73. Native support for binary files, with space-efficient binary-diff storage
    72. 74. Branching and tagging are cheap operations, independent of file size Subversion itself does not distinguish between a tag, a branch, and a directory
    73. 75. File locking for unmergeable files (&quot;reserved checkouts&quot;)
    74. 76. &
    75. 77. if (like me) you like a DVCS like Git …
    76. 78. you can use Git with Subversion! git-svn (for when you have to use subversion)
    77. 79. Questions?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×