Why You Should Be Using A Distributed Version Control System (DVCS) For Your Project
Why You Should Be Using A Distributed Version Control System (DVCS) For Your Project
Lenz Grimmer <[email protected]> < http://lenzg.net/ | Twitter: @lenzgr 2009-12-03 SAPO Codebits | Lisbon | Portugal
Agenda
Disadvantages of the central approach DVCS Concepts and Advantages Overview: Bazaar, git, Mercurial
$ whoami
1998
2002
2008
2010?
Collaboration is hampered
Disconnected operations
Local commits
Multi-protocol support
Sample workflows
Solo Workflow
Create project Commit changes Review/browse history Tag/publish release Apply new changes Rinse & Repeat
Hack
Pair programming
Hack Commit
Branch Push,pull,merge Pullandmerge
DeveloperA
DeveloperB
Code deployment
Upstream project
Commit
Livesite
Hack
Merge Branch Developer
Push
Edit,Commit, Push
Centralrepository
Gatekeeper
Comparison aspects
Usability differences Project hosting sites OS support 3 party tools (e.g. IDE integration, GUIs) Plugins/Extensibility Speed Reference projects Handling of branches and merges
rd
Bazaar
Python Sponsored by Canonical Hosting Platforms: Launchpad | Sourceforge Many plugins One branch per directory simplifies the UI IDE/GUI support Strong OS support (incl. Windows) References: Debian apt, awn, Gnash, MySQL, Ubuntu
git
C | Perl | Shell Originated from the Linux Kernel Community Speed first, usability later Powerful, but steeper learning curve Multiple branches per directory Platforms: Kenai, github, gitorious, SourceForge References: Linux Kernel, Ruby on Rails, jQuery
Mercurial
Python Plugins Platforms: Bitbucket, Google Code, Kenai Multiple branches per directory (named branches) A pull updates the repo, not the working copy References: NetBeans, OpenJDK, OpenOffice, OpenSolaris, Python
Q&A
Questions, Comments?