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,...
Source Control
   Tool
   History
   Subversion
   The future: DVCS
Subversion (svn)
Creator             CollabNet

URL                 http://subversion.apache.org

Maintainer          Apac...
Subversion: The Roapmap
   Taken from:
    ●   http://lwn.net/Articles/381794/

      Subversion exists to be universally...
Git
Creator          Linus Torvalds

URL              http://git-scm.com/

Maintainer       Junio Hamano

Users           ...
Bazaar (bzr)
Creator              Martin Pool

URL                  http://bazaar.canonical.com/

Maintainer           Can...
Mercurial (hg)
Creator            Matt Mackall

URL                http://mercurial.selenic.com/

Maintainer         Matt ...
Features
   Atomic commits
   File renames
   Symbolic links
   Pre/Post event hooks
   Merge tracking
   Tags
   E...
Protocols
   Everything supports SSH and HTTP(S)
   Distributed systems support email
   Bazaar supports FTP
   Git su...
Centralised vs Distributed Source
             Control




                                    11
Centralised Source Control
   Traditional model
   Subversion uses this
   Other products can do it




               ...
Centralised Source Control




                             13
Distributed Source Control




                             14
Distributed Source Control
   Same function as centralised source control
   Very different approach
   Steeper learnin...
Local Repository
   Clone a whole repo
   It's FAST
   Can commit without sharing
   Can rewrite history




         ...
Snapshots vs Changesets
   From a Joel Spolsky post:


         With distributed version control, the
         distribute...
Snapshots vs Changesets
   Subversion commit is a snapshot of the
    codebase
   For a DCVS, it's a set of changes
   ...
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 list...
Code Hosting Providers

GitHub                    git
http://github.com/

Bitbucket                 hg
http://bitbucket.or...
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 https://launchpad.net/bzr-svn
    ●   git-svn http:...
Access Control
   SVN has granular access control
   Can use various apache mechanisms
   Control access by path
   DC...
Cost of Transition
   Steeper learning curve
   Implementation costs
    ●   tool migration
    ●   process changes
    ...
Making Choices
   Global team of expert geeks - use DCVS (any
    one)
   Colocated team of mixed ability - use SVN
   ...
Any Questions?




                 31
Thanks!


   @lornajane
http://lornajane.net
Upcoming SlideShare
Loading in...5
×

The Source Control Landscape

2,678

Published on

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

No Downloads
Views
Total Views
2,678
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

The Source Control Landscape

  1. 1. Source Control Landscape Lorna Jane Mitchell PHP London, October 2010
  2. 2. About Me  Lorna Jane Mitchell  Freelance PHP consultant/developer/trainer  Speaker and Writer  Based in Leeds, UK (in town for FOWA)  Homepage: http://lornajane.net  Twitter: @lornajane
  3. 3. Source Control  Tool  History  Subversion  The future: DVCS
  4. 4. Subversion (svn) Creator CollabNet URL http://subversion.apache.org Maintainer Apache Users PHP Sourceforge FreeBSD Apache Software Foundation License Apache/BSD style Documentation Excellent, more mature Red Bean Book 4
  5. 5. 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. 5
  6. 6. Git Creator Linus Torvalds URL http://git-scm.com/ 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
  7. 7. Bazaar (bzr) Creator Martin Pool URL http://bazaar.canonical.com/ Maintainer Canonical Users Ubuntu MySQL Inkscape Squid License GPL Documentation Excellent! Aimed at beginners, UI designed to be intuitive 7
  8. 8. Mercurial (hg) Creator Matt Mackall URL http://mercurial.selenic.com/ Maintainer Matt Mackall Users Mozilla OpenOffice.org SymbianOS NetBeans License GPL Documentation Good, online book and command line help 8
  9. 9. Features  Atomic commits  File renames  Symbolic links  Pre/Post event hooks  Merge tracking  Tags  EOL conversions 9
  10. 10. Protocols  Everything supports SSH and HTTP(S)  Distributed systems support email  Bazaar supports FTP  Git supports rsync 10
  11. 11. Centralised vs Distributed Source Control 11
  12. 12. Centralised Source Control  Traditional model  Subversion uses this  Other products can do it 12
  13. 13. Centralised Source Control 13
  14. 14. Distributed Source Control 14
  15. 15. Distributed Source Control  Same function as centralised source control  Very different approach  Steeper learning curve  Key concepts ● local repositories ● revisions ● branching 15
  16. 16. Local Repository  Clone a whole repo  It's FAST  Can commit without sharing  Can rewrite history 16
  17. 17. 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
  18. 18. 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
  19. 19. Branching  Branches in DCVS are not just copies  Working copy can switch between them  Private branching
  20. 20. The Social Aspect
  21. 21. Hosted Code Solutions  Combat the complexity of DCVS  Supporting tools  e.g. GitHub
  22. 22. 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
  23. 23. Code Hosting Providers GitHub git http://github.com/ Bitbucket hg http://bitbucket.org/ Google Code svn, hg http://code.google.com/ Launchpad bzr https://launchpad.net/ SourceForge svn, bzr, hg, git (and cvs) http://sourceforge.net/ 23
  24. 24. Tools and Choices
  25. 25. Trac  Trac supports all mentioned products  Code browsing  Commit messages update issues
  26. 26. GUI Tools  Moving target!  Improving IDE support  Tortoise* products  Limited support for git on windows
  27. 27. Building Bridges  Bridge between SVN repo and local ● bzr-svn https://launchpad.net/bzr-svn ● git-svn http://www.kernel.org/pub/software/scm/git/docs/git-svn.html  Local distributed-style repo  Communicates with central SVN server  Pulls complete history ● diff, log fast and offline  Work offline, commit later 27
  28. 28. 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?
  29. 29. 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
  30. 30. 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
  31. 31. Any Questions? 31
  32. 32. Thanks! @lornajane http://lornajane.net
  1. A particular slide catching your eye?

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

×