Your SlideShare is downloading. ×
0
Distributed Version
 Control Systems
     A short introduction
      19 February, 2010
Outline
• Goals
• What is DVCS anyway?
• What are the disadvantages?
• What are the advantages?
• How do I interface with ...
Goals


•   Inform about DVCS

•   Not trying to force a
    change!
DVCS in 5 minutes
    Flexible workflow
DVCS in 5 minutes
    Flexible workflow
DVCS in 5 minutes
    Flexible workflow
DVCS in 5 minutes
    Flexible workflow
DVCS in 5 minutes
    Flexible workflow


    dev         prod
DVCS in 5 minutes

• Complete local copy of the repository
• Most common actions don’t need network
• Private branches
DVCS in 5 minutes

• Most popular:
 • Bazaar
 • Git
 • Mercurial
Disadvantages

• More complex to learn/use
• New or redefined terminology
• No partial clones so one repo per project
• Eas...
Advantages

• Local commits (easier to experiment)
• FAST!
• Cleaner working copy (no .svn dirs)
• Working copy svn same s...
Advantages

• Cooperation without commits to central
  repo
• Better merging, thus low barrier for
  branching
• Commit be...
Cooperation
Cooperation
Cooperation
Branching

“trunk”
Branching

“trunk”



branch



           feature X
Branching

“trunk”



branch



           feature X
Branching

“trunk”



branch



           feature X
Branching

“trunk”



branch




branch
Branching

“trunk”



branch




branch
Branching

“trunk”



branch



           feature X
Branching
                   release



“trunk”

branch

branch



               bugfix
Branching

“trunk”

branch

branch



                 feature X
Merge before commit
  remote   local

                   update

                   run tests; no errors
Merge before commit
  remote   local

                   update

                   run tests; no errors

                ...
Merge before commit
  remote   local

                   update

                   run tests; no errors

                ...
Merge before commit
           remote   local

                            update

                            run tests; ...
Merge before commit
           remote   local

                            update

                            run tests; ...
Commit before merge
  remote   local

                   update

                   run tests; no errors
Commit before merge
  remote   local

                   update

                   run tests; no errors

                ...
Commit before merge
  remote   local

                   update

                   run tests; no errors

                ...
Commit before merge
           remote   local

                            update

                            run tests; ...
Commit before merge
  remote   local

                   update

                   run tests; no errors

                ...
How I use git-svn
svn   buildout
           src
                 theme
                 policy
How I use git-svn
svn    buildout
            src
                  theme
                  policy


$ git svn clone -s <b...
How I use git-svn
svn   buildout
           src
                 theme    svn:external
                 policy   svn:exter...
How I use git-svn
svn    buildout
            src
                  theme    svn:external
                  policy   svn:e...
How I use git-svn
svn
How I use git-svn
   svn

           clone

master
How I use git-svn
     svn



 master

                branch

feature X
How I use git-svn
                     other commits
     svn



 master

                branch

feature X
How I use git-svn
     svn

                  fetch + rebase

 master



feature X
How I use git-svn
     svn



 master

                   rebase

feature X
How I use git-svn
     svn



 master

                       merge

feature X
How I use git-svn
   svn

                  dcommit (push)

master
How I use git-svn

• Unsolved problem: how to use git-svn
  when buildout uses:
 • infrae.subversion ?
 • mr.developer ?
Questions? Tips?
Upcoming SlideShare
Loading in...5
×

Distributed Version Control Systems

1,520

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,520
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
87
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide





















































































































































































































  • Transcript of "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.

    ×