Your SlideShare is downloading. ×
AtlasCamp 2010: What is DVCS and why it will change the way we work - Jens Schumacher
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

AtlasCamp 2010: What is DVCS and why it will change the way we work - Jens Schumacher

1,399
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,399
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
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. 2010
  • 2. The Subversion Dilemma ! Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or
  • 3. The Subversion Dilemma ! Weeks withoutVersion Control
  • 4. Jens Schumacher – Atlassian What is DVCS and why it will change the way we work! 2010
  • 5. Overview! 1. Mercurial vs. Subversion 2. Basic concepts 3. Use cases
  • 6. Subversion vs Mercurial!
  • 7. Subversion vs Mercurial! Merging
  • 8. Subversion vs Mercurial! Branching
  • 9. Subversion vs Mercurial! Repository Access
  • 10. Subversion vs Mercurial! Performance
  • 11. Subversion vs Mercurial! Sharing
  • 12. Subversion vs Mercurial! Tool Support
  • 13. Subversion vs Mercurial! Authentication
  • 14. Subversion vs Mercurial! Check Out
  • 15. Subversion vs Mercurial!
  • 16. Overview! 1. Mercurial vs. Subversion 2. Basic concepts 3. Use cases
  • 17. Repository Architecture!
  • 18. Subversion!
  • 19. Mercurial!
  • 20. Subversion! Revisions Subversion is always linear
  • 21. Mercurial! Changesets head Each Changeset can have multiple children
  • 22. Mercurial! head head
  • 23. Mercurial! Pull Merge
  • 24. Mercurial! "hg commit" adds a new node "hg push" and "hg pull" transfer nodes in the graph between two repositories "hg merge" merge changes in a repository
  • 25. Branching in Mercurial! •  Forks" •  Named Branches" •  Bookmarks" •  Anonymous Branches"
  • 26. Forks!
  • 27. Forks! •  Complete Isolation" •  Very easy to discard" •  Forking is slower" Disadvantages"Advantages" 1 2
  • 28. Forks! When to use Forks" •  When you donʼt have commit access" •  To experiment" •  For a build repository"
  • 29. Named Branches!
  • 30. Named Branches! •  Branch Metadata" •  Faster than Forking" •  Branch Metadata" •  Closing a Branch (fixed in 1.2)" Disadvantages"Advantages"
  • 31. Named Branches! When to use Named Branches" •  Working in a team on a feature"
  • 32. Bookmarks!
  • 33. Bookmarks! •  Lightweight" •  Can be deleted" •  Similar to git" •  Local (fixed in 1.6) " •  Possible loss of context " Disadvantages"Advantages"
  • 34. Bookmarks! When to use Bookmarks" •  Working in a team on a feature" •  If you like to way git does branching" •  If you use Mercurial 1.6"
  • 35. Anonymous Branches!
  • 36. Anonymous Branches! •  Fast " •  No name required" •  No closing required" •  No description" •  Changeset # required (lookup with hg log)" Disadvantages"Advantages"
  • 37. Anonymous Branches! When to use Anonymous Branches" •  For quick & small fixes"
  • 38. Overview! 1. Mercurial vs. Subversion 2. Basic concepts 3. Use cases
  • 39. BitBucket! Mercurial code hosting" •  Free for 5 users" •  Unlimited public collaborators" •  Unlimited disk space"
  • 40. Getting Started!
  • 41. The Basics! hg init create a new repositoryhg commit save your changes in the current repositoryhg log see all changes in your repositoryhg pull pull all changes from another repository into yourshg push push your changes into another repositoryhg merge join different lines of history hg update update the repository's working di rectoryhg help <command>
  • 42. Separate Features! Use Case Work on several features in parallel
  • 43. Separate Features! $ hg clone project feature$ cd feature$ (do some changes and commits) Clone
  • 44. Separate Features! $ cd ../project$ hg incoming ../feature Incoming Use hg incoming --patch to view the diffs
  • 45. Separate Features! $ hg pull ../feature Pull The history of feature one is now in your project. However, changes are not yet visible and only stored in the .hg directory
  • 46. Separate Features! $ hg merge Merge $ hg commit(enter commit message) Commit
  • 47. Separate Features! Changesets
  • 48. Collaborative Feature Development! Use Case Using Mercurial to help coordinate the coding
  • 49. Collaborative Feature Development! $ hg branch feature(do some changes)$ hg commit(write commit message) Create a branch $ hg update feature(do some changes)$ hg commit(write commit message)
  • 50. Collaborative Feature Development! $ hg update default$ hg merge feature$ hg commit(write commit message) Merge the named branch Named branches stay in history as permanent records after you finished your work.
  • 51. Collaborative Feature Development! Changesets
  • 52. Tagging Revisions! Use Case Release a plugin
  • 53. Tagging Revisions! $ hg tag -r 8 v0.1 Add a tag $ hg tags See all tags $ hg update v0.1 Update to a tagged revision
  • 54. Tagging Revisions! Tags"
  • 55. Overview! 1. Mercurial vs. Subversion 2. Basic concepts 3. Use cases
  • 56. Try BitBucket! bitbucket.org"
  • 57. Links! •  http://mercurial.selenic.com" •  http://stevelosh.com/blog/2009/08/a-guide-to- branching-in-mercurial" •  http://hgbook.red-bean.com/"
  • 58. Thank you!!