The Source Control Landscape
Upcoming SlideShare
Loading in...5

The Source Control Landscape






Total Views
Views on SlideShare
Embed Views



3 Embeds 1,115 1113 1 1



Upload Details

Uploaded via as Adobe PDF

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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

The Source Control Landscape The Source Control Landscape Presentation Transcript

  • Source Control Landscape Lorna Jane Mitchell PHP London, October 2010
  • About Me  Lorna Jane Mitchell  Freelance PHP consultant/developer/trainer  Speaker and Writer  Based in Leeds, UK (in town for FOWA)  Homepage:  Twitter: @lornajane
  • Source Control  Tool  History  Subversion  The future: DVCS
  • 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 4
  • Subversion: The Roapmap  Taken from: ● 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. 5
  • 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 6
  • 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 7
  • Mercurial (hg) Creator Matt Mackall URL Maintainer Matt Mackall Users Mozilla SymbianOS NetBeans License GPL Documentation Good, online book and command line help 8
  • Features  Atomic commits  File renames  Symbolic links  Pre/Post event hooks  Merge tracking  Tags  EOL conversions 9
  • Protocols  Everything supports SSH and HTTP(S)  Distributed systems support email  Bazaar supports FTP  Git supports rsync 10
  • Centralised vs Distributed Source Control 11
  • Centralised Source Control  Traditional model  Subversion uses this  Other products can do it 12
  • Centralised Source Control 13
  • Distributed Source Control 14
  • Distributed Source Control  Same function as centralised source control  Very different approach  Steeper learning curve  Key concepts ● local repositories ● revisions ● branching 15
  • Local Repository  Clone a whole repo  It's FAST  Can commit without sharing  Can rewrite history 16
  • Snapshots vs Changesets  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 17
  • Snapshots vs Changesets  Subversion commit is a snapshot of the codebase  For a DCVS, it's a set of changes  Makes it easier to share changes  Can be applied in different orders  Cherry-picking
  • Branching  Branches in DCVS are not just copies  Working copy can switch between them  Private branching
  • The Social Aspect
  • Hosted Code Solutions  Combat the complexity of DCVS  Supporting tools  e.g. GitHub
  • Code Hosting and Collaboration  Provide repository space  Repo browsing, linked projects  Forums and mailing lists  Wiki (or similar: launchpad has blueprints)  Publish downloadable versions  Message other collaborators 22
  • Code Hosting Providers GitHub git Bitbucket hg Google Code svn, hg Launchpad bzr SourceForge svn, bzr, hg, git (and cvs) 23
  • Tools and Choices
  • Trac  Trac supports all mentioned products  Code browsing  Commit messages update issues
  • GUI Tools  Moving target!  Improving IDE support  Tortoise* products  Limited support for git on windows
  • Building Bridges  Bridge between SVN repo and local ● bzr-svn ● git-svn  Local distributed-style repo  Communicates with central SVN server  Pulls complete history ● diff, log fast and offline  Work offline, commit later 27
  • Access Control  SVN has granular access control  Can use various apache mechanisms  Control access by path  DCVS are much newer, access control uses hooks  Can control writes  What about reads?
  • Cost of Transition  Steeper learning curve  Implementation costs ● tool migration ● process changes ● supporting tool migration ● user training (ongoing!)  Hype and dismissive attitudes are unhelpful 29
  • Making Choices  Global team of expert geeks - use DCVS (any one)  Colocated team of mixed ability - use SVN  Everything else is a sliding scale!  Consider ● Your people ● Your admins ● The documentation, support and community of your chosen solution 30
  • Any Questions? 31
  • Thanks! @lornajane