Distributed Version Control Systems

1,623
-1

Published on

On 19 February I held a presentation for my colleagues about distributed version control systems (DVCS). My main goal was to inform them on what I think is the next logical step in source control.

Also see http://vlent.nl/weblog/2010/02/25/distributed-version-control-systems-presentation

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,623
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
88
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide





















































































































































































































  • Distributed Version Control Systems

    1. 1. Distributed Version Control Systems A short introduction 19 February, 2010
    2. 2. Outline • Goals • What is DVCS anyway? • What are the disadvantages? • What are the advantages? • How do I interface with Subversion?
    3. 3. Goals • Inform about DVCS • Not trying to force a change!
    4. 4. DVCS in 5 minutes Flexible workflow
    5. 5. DVCS in 5 minutes Flexible workflow
    6. 6. DVCS in 5 minutes Flexible workflow
    7. 7. DVCS in 5 minutes Flexible workflow
    8. 8. DVCS in 5 minutes Flexible workflow dev prod
    9. 9. DVCS in 5 minutes • Complete local copy of the repository • Most common actions don’t need network • Private branches
    10. 10. DVCS in 5 minutes • Most popular: • Bazaar • Git • Mercurial
    11. 11. Disadvantages • More complex to learn/use • New or redefined terminology • No partial clones so one repo per project • Easier to crawl into a cave
    12. 12. Advantages • Local commits (easier to experiment) • FAST! • Cleaner working copy (no .svn dirs) • Working copy svn same size as full history • Code review local commits before push
    13. 13. Advantages • Cooperation without commits to central repo • Better merging, thus low barrier for branching • Commit before merge instead of merge before commit
    14. 14. Cooperation
    15. 15. Cooperation
    16. 16. Cooperation
    17. 17. Branching “trunk”
    18. 18. Branching “trunk” branch feature X
    19. 19. Branching “trunk” branch feature X
    20. 20. Branching “trunk” branch feature X
    21. 21. Branching “trunk” branch branch
    22. 22. Branching “trunk” branch branch
    23. 23. Branching “trunk” branch feature X
    24. 24. Branching release “trunk” branch branch bugfix
    25. 25. Branching “trunk” branch branch feature X
    26. 26. Merge before commit remote local update run tests; no errors
    27. 27. Merge before commit remote local update run tests; no errors write code run tests; no errors
    28. 28. Merge before commit remote local update run tests; no errors write code run tests; no errors update + solve conflicts
    29. 29. Merge before commit remote local update run tests; no errors write code error in run tests; no errors commit? error in update + solve conflicts merge? run tests; errors
    30. 30. Merge before commit remote local update run tests; no errors write code error in run tests; no errors commit? error in update + solve conflicts merge? run tests; errors No commit to revert to!
    31. 31. Commit before merge remote local update run tests; no errors
    32. 32. Commit before merge remote local update run tests; no errors write code run tests; no errors make local commit
    33. 33. Commit before merge remote local update run tests; no errors write code run tests; no errors make local commit update + solve conflicts
    34. 34. Commit before merge remote local update run tests; no errors write code error in run tests; no errors commit? make local commit error in update + solve conflicts merge? run tests; errors
    35. 35. Commit before merge remote local update run tests; no errors write code Revert to run tests; no errors working commit make local commit and try again
    36. 36. How I use git-svn svn buildout src theme policy
    37. 37. How I use git-svn svn buildout src theme policy $ git svn clone -s <buildout-url> git buildout src theme policy
    38. 38. How I use git-svn svn buildout src theme svn:external policy svn:external
    39. 39. How I use git-svn svn buildout src theme svn:external policy svn:external $ git svn clone -s <buildout-url> $ git-ext-svn-clone git buildout src theme git policy git
    40. 40. How I use git-svn svn
    41. 41. How I use git-svn svn clone master
    42. 42. How I use git-svn svn master branch feature X
    43. 43. How I use git-svn other commits svn master branch feature X
    44. 44. How I use git-svn svn fetch + rebase master feature X
    45. 45. How I use git-svn svn master rebase feature X
    46. 46. How I use git-svn svn master merge feature X
    47. 47. How I use git-svn svn dcommit (push) master
    48. 48. How I use git-svn • Unsolved problem: how to use git-svn when buildout uses: • infrae.subversion ? • mr.developer ?
    49. 49. Questions? Tips?
    1. A particular slide catching your eye?

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

    ×