Subversion in a  Distributed World
About Me Lorna Mitchell
PHP Developer/Trainer/Consultant at Ibuildings
Host of Dutch PHP Conference 2010
Active with PHPWomen.org
Organiser at PHPNW
Personal blog:  http://lornajane.net
Twitter: @lornajane
Source Control Keeping-place for code
Centralised or distributed
Project archive
Collaboration tool
Integration point for development
for business processes
One True Way
 
The Products
Subversion (svn) Creator CollabNet URL Maintainer Apache Users PHP Sourceforge FreeBSD Apache Software Foundation License Apache/BSD style Documentation Excellent, more mature Red Bean Book
Subversion: The Roapmap Taken from: http://lwn.net/Articles/381794/ Subversion exists to be universally recognized and adopted as an open-source, centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations.
Git Creator Linus Torvalds URL Maintainer Junio Hamano Users Linux kernel Ruby on Rails CakePHP Debian GNOME License GPL Documentation "terse", a lot of documentation for an unfamiliar system
Bazaar (bzr) Creator Martin Pool URL Maintainer Canonical Users Ubuntu MySQL Inkscape Squid License GPL Documentation Excellent! Aimed at beginners, UI designed to be intuitive
Mercurial (hg) Creator Matt Mackall URL Maintainer Matt Mackall Users Mozilla OpenOffice.org SymbianOS NetBeans License GPL Documentation Good, online book and command line help
Features Atomic commits
File renames
Symbolic links
Pre/Post event hooks
Merge tracking
Tags
EOL conversions
Protocols Everything supports SSH and HTTP(S)
Distributed systems support email
Bazaar supports FTP
Git supports rsync
Centralised vs Distributed Source Control
Centralised Source Control
Centralised Source Control Traditional model
Subversion uses this
Other products can do it
Distributed Source Control
Distributed Source Control
Distributed Source Control Git, Bazaar and Mercurial are distributed
Many repositories
Move changes between any or all of these
Revisions vs Changes From a Joel Spolsky post: With distributed version control, the distributed part is actually not the most interesting part.  The interesting part is that these systems think in terms of changes, not in terms of versions
Repo Structure: SVN Top level projects
Branches, tags and trunk
Can check out and commit at subdirectory level
Repo Structure: DVCS Separate repository per project
Can only check out the whole thing
Controlled at the top level
Can safely copy directories :)
Referring to Revisions svn:  whole repo increments with every change
git:  generates a SHA1, a 40 character hexadecimal string
bzr:  uses per branch incrementing revision numbers
hg:  sequential revision number AND unique changeset ID in a SHA1
Git Hashing Every commit has an identifying hash
Hash is of commit and includes information about parent
Any change in any version is seen later, because parental hashes change

Subversion in a distributed world

Editor's Notes

  • #3 Ibuildings is recruiting!
  • #6 its about what works for you: your process your team your environment
  • #8 subversion has been around longer, since 2000 the red bean book is free in digital format, or you can buy an actual book "Apache Subversion" as of February 2010
  • #10 http://versioncontrolblog.com/comparison/Bazaar/Git/Mercurial/Subversion/index.html (source of the "terse" quote) uses commands unlike other source control systems'
  • #11 I had good experiences with their IRC channel
  • #12 used by people I want to work for
  • #13 Look out for SVN tags, they're just a copy
  • #24 CVS: each file had incrementing number git: which can be abbreviated (tag to make this more readable/useful) hg: 40 chars of hex which can be abbreviated
  • #42 NB Versions not equivalent!
  • #44 also beanstalk, unfuddle corporations hosting their distributed systems here that can get very expensive very fast
  • #46 With multiple repositories, the chances of losing data are much smaller. Can work offline Distribution scares businesses, since they like to control where their code goes Processes need to support use of more complicated tools Higher requirements for recruits or more training and support needed for teams
  • #58 (and if you're still interested in git - stay for Travis' talk!)