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
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
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!
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