Why you should be using a distributed version control system

2,341 views

Published on

Slides of my talk "Why you should be using a distributed version control system (DVCS) for your project", first presented at SAPO CodeBits in Lisbon, Portugal on 2009-12-03.

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
No Downloads
Views
Total views
2,341
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
38
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Why you should be using a distributed version control system

  1. 1. Why you should be using a distributed version control system (DVCS) for your project Lenz Grimmer <lenz@grimmer.com> < http://lenzg.net/ | Twitter: @lenzgr 2009-12-03 SAPO Codebits | Lisbon | Portugal
  2. 2. Agenda ● Disadvantages of the central approach ● DVCS Concepts and Advantages ● Overview: Bazaar, git, Mercurial
  3. 3. $ whoami 1998 2002 2008 2010?
  4. 4. Disadvantages of the centralized approach (e.g. Subversion and CVS)
  5. 5. Most operations require communication with the central repository
  6. 6. Checkpointing your work requires committing to the central repository
  7. 7. Branching and merging considered painful
  8. 8. Collaboration is hampered
  9. 9. DVCS: Concepts and Advantages
  10. 10. There is no central instance (Well, duh!)
  11. 11. Disconnected operations
  12. 12. Local commits
  13. 13. Easy branching and merging
  14. 14. Multi-protocol support
  15. 15. Sample workflows
  16. 16. Solo Workflow ● Create project ● Commit changes Hack ● Review/browse history ● Tag/publish release ● Apply new changes ● Rinse & Repeat
  17. 17. Pair programming Create repository HackCommit Hack Commit Branch Push, pull, merge Pull and merge Developer A Developer B
  18. 18. Code deployment Commit Upstream Live site project Hack Merge Branch Push Developer
  19. 19. Central Branch & Gatekeeper Developer A Developer B Branch, Merge, Edit, Commit, Pull Push Edit, Commit, Push Merge, Review Push Central repository Gatekeeper
  20. 20. Overview: Bazaar, git, Mercurial
  21. 21. Comparison aspects ● Usability differences ● Project hosting sites ● OS support rd ● 3 party tools (e.g. IDE integration, GUIs) ● Plugins/Extensibility ● Speed ● Reference projects ● Handling of branches and merges
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. Q&A Questions, Comments?
  26. 26. Thank you! Lenz Grimmer <lenz@grimmer.com>

×