Distributed Version Control Systems

  • 1,430 views
Uploaded 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 …

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,430
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
81
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide





















































































































































































































Transcript

  • 1. Distributed Version Control Systems A short introduction 19 February, 2010
  • 2. Outline • Goals • What is DVCS anyway? • What are the disadvantages? • What are the advantages? • How do I interface with Subversion?
  • 3. Goals • Inform about DVCS • Not trying to force a change!
  • 4. DVCS in 5 minutes Flexible workflow
  • 5. DVCS in 5 minutes Flexible workflow
  • 6. DVCS in 5 minutes Flexible workflow
  • 7. DVCS in 5 minutes Flexible workflow
  • 8. DVCS in 5 minutes Flexible workflow dev prod
  • 9. DVCS in 5 minutes • Complete local copy of the repository • Most common actions don’t need network • Private branches
  • 10. DVCS in 5 minutes • Most popular: • Bazaar • Git • Mercurial
  • 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. 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. Advantages • Cooperation without commits to central repo • Better merging, thus low barrier for branching • Commit before merge instead of merge before commit
  • 14. Cooperation
  • 15. Cooperation
  • 16. Cooperation
  • 17. Branching “trunk”
  • 18. Branching “trunk” branch feature X
  • 19. Branching “trunk” branch feature X
  • 20. Branching “trunk” branch feature X
  • 21. Branching “trunk” branch branch
  • 22. Branching “trunk” branch branch
  • 23. Branching “trunk” branch feature X
  • 24. Branching release “trunk” branch branch bugfix
  • 25. Branching “trunk” branch branch feature X
  • 26. Merge before commit remote local update run tests; no errors
  • 27. Merge before commit remote local update run tests; no errors write code run tests; no errors
  • 28. Merge before commit remote local update run tests; no errors write code run tests; no errors update + solve conflicts
  • 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. 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. Commit before merge remote local update run tests; no errors
  • 32. Commit before merge remote local update run tests; no errors write code run tests; no errors make local commit
  • 33. Commit before merge remote local update run tests; no errors write code run tests; no errors make local commit update + solve conflicts
  • 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. 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. How I use git-svn svn buildout src theme policy
  • 37. How I use git-svn svn buildout src theme policy $ git svn clone -s <buildout-url> git buildout src theme policy
  • 38. How I use git-svn svn buildout src theme svn:external policy svn:external
  • 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. How I use git-svn svn
  • 41. How I use git-svn svn clone master
  • 42. How I use git-svn svn master branch feature X
  • 43. How I use git-svn other commits svn master branch feature X
  • 44. How I use git-svn svn fetch + rebase master feature X
  • 45. How I use git-svn svn master rebase feature X
  • 46. How I use git-svn svn master merge feature X
  • 47. How I use git-svn svn dcommit (push) master
  • 48. How I use git-svn • Unsolved problem: how to use git-svn when buildout uses: • infrae.subversion ? • mr.developer ?
  • 49. Questions? Tips?