codebitsdvcs20090913-1260184885-phpapp02

Upload: jerry-pascua

Post on 06-Apr-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    1/26

    Why you should be using aWhy you should be using adistributed version control systemdistributed version control system

    (DVCS) for your project(DVCS) for your project

    Lenz Grimmer http://lenzg.net/ | Twitter:| Twitter: @lenzgr

    2009-12-032009-12-03

    SAPO Codebits | Lisbon | PortugalSAPO Codebits | Lisbon | Portugal

    mailto:[email protected]://lenzg.net/http://twitter.com/lenzgrhttp://twitter.com/lenzgrhttp://lenzg.net/mailto:[email protected]
  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    2/26

    Agenda

    Disadvantages of the centralapproach

    DVCS Concepts and Advantages

    Overview: Bazaar, git, Mercurial

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    3/26

    $ whoami

    1998 2002

    2010?2008

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    4/26

    Disadvantages of the centralized

    approach(e.g. Subversion and CVS)

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    5/26

    Most operations require

    communication with the centralrepository

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    6/26

    Checkpointing your work

    requires committing to thecentral repository

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    7/26

    Branching and merging

    considered painful

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    8/26

    Collaboration is hampered

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    9/26

    DVCS: Concepts and

    Advantages

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    10/26

    There is no central instance

    (Well, duh!)

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    11/26

    Disconnected operations

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    12/26

    Local commits

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    13/26

    Easy branching and merging

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    14/26

    Multi-protocol support

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    15/26

    Sample workflows

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    16/26

    Solo Workflow

    Create project Commit changes

    Review/browse

    history Tag/publish release

    Apply new changes

    Rinse & Repeat

    Hack

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    17/26

    Pair programming

    Create repository

    Branch

    HackHackCommit

    Pull and merge

    Commit

    Developer A Developer B

    Push, pull, merge

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    18/26

    Code deployment

    Upstream

    projectLive site

    Developer

    Branch

    Hack

    Commit

    MergePush

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    19/26

    Central Branch & Gatekeeper

    Central repository Gatekeeper

    Developer A Developer B

    Branch, Merge,

    PullEdit, Commit,

    Push

    Merge, ReviewPush

    Edit, Commit,

    Push

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    20/26

    Overview: Bazaar, git, Mercurial

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    21/26

    Comparison aspects

    Usability differences Project hosting sites

    OS support

    3rd party tools (e.g. IDE integration, GUIs)

    Plugins/Extensibility

    Speed

    Reference projects

    Handling of branches and merges

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    22/26

    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

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    23/26

    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

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    24/26

    Mercurial

    Python Plugins

    Platforms: Bitbucket, Google Code, Kenai

    Multiple branches per directory (namedbranches)

    A pull updates the repo, not the working

    copy References: NetBeans, OpenJDK,

    OpenOffice, OpenSolaris, Python

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    25/26

    Q & A

    Questions, Comments?

  • 8/3/2019 codebitsdvcs20090913-1260184885-phpapp02

    26/26

    Thank you!Lenz Grimmer

    mailto:[email protected]:[email protected]