Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DVCS: Making the Move?How Atlassian can help...Matthew WatsonFishEye/Crucible Team Lead, Atlassian                        ...
Why DVCS?• Lots of people excited by it• Huge in Open Source• But what about Commercial in-house development?• What about ...
What’s Great about DVCS?• Work offline• Easier branching and merging• Github and Bitbucket• Do we really need this?       ...
What’s really cool about DVCS!• What does ‘D’ in DVCS stand for?                                     5
What’s really cool about DVCS!• What does ‘D’ in DVCS stand for?• Distributed • Commit often, push when ready • Fast, peer...
What’s really cool about DVCS?• What should the ‘D’ in DVCS  stand for?                                 6
What’s really cool about DVCS?• What should the ‘D’ in DVCS  stand for?• DAG = Directed Acyclic Graph                     ...
SVN Commits Bob Mary Will        r38              7
SVN Commits              A.java Bob Mary Will        r38            r39                             7
SVN Commits              A.java Bob                             B.java Mary Will        r38            r39            r40 ...
SVN Commits              A.java Bob                             B.java Mary                                            C.j...
SVN Commits   Will   svn commit   svn update          A.java r38          B.java r38          C.java r41                  ...
SVN Commits   Will   svn commit   svn update          A.java r38      r39          B.java r38      r40          C.java r41...
DAG Commits 38:fb38fed187ab                   9
DAG Commits                        Bob 38:fb38fed187ab       A.java                   39:bb0760b60a8b                     ...
DAG Commits                        Bob 38:fb38fed187ab       A.java                   39:bb0760b60a8b                     ...
DAG Commits                        Bob 38:fb38fed187ab       A.java                   39:bb0760b60a8b                     ...
DAG Commits                        Bob 38:fb38fed187ab       A.java                   39:bb0760b60a8b                     ...
DAG Commits                        Bob 38:fb38fed187ab       A.java                   39:bb0760b60a8b                     ...
The Power of the DAG• Deterministic• Annotate/blame works!• Easy and powerful merges - Don’t be scared of long  running br...
Traceability• In SVN/CVS etc merges hide  what happened                                  Time• In DVCS, the DAG lets you s...
Flexibility• Single Integrator, Gatekeeper• Feature branches, git-flow• Clones• Automation• No central repository         ...
Workflows, Workflows, Workflows• Which workflow to use?• “With Great Power there must also come - Great  Responsibility!” ...
Feature Branching• Branching and merging cheap  and easy                                    Time• All feature work done on...
Feature Branching Workflow default       Time                             15
Feature Branching Workflow              Create Feature Branch                     FE-143FE-143 default       Time         ...
Feature Branching Workflow                Squash Bugs!FE-143 default       Time                               15
Feature Branching WorkflowFE-127                    Complete FE-127FE-143 default       Time                              ...
Feature Branching Workflow                   Merge latest from                 default, build, test andFE-127FE-143 defaul...
Feature Branching Workflow                    Merge to default, close                     JIRA, set fix versionFE-127FE-14...
Feature Branching WorkflowFE-127                        Stable code!FE-143 default       Time                             ...
Cross Branch Dependencies• Can merge to any downstream branch• Easily merge fixes for releases into  subsequent versions• ...
Migrating to DVCS• Which DVCS?• Small team - just go for it!• Large team - Don’t Fu$%! your devspeed!• Our goal - Zero dow...
Sync from SVN• Git SVN and HgSubversion • Incremental conversion• Remap Committers • mwatson = Matthew Watson <mwatson@atl...
Use Continuous Integration!• Vital part of dev cycle• Run same builds against old  and new VCS• Continuous Validation     ...
Use FishEye!• Sales Pitch• Commit Graph• See your commits in SVN  and DVCS                            20
Use Crucible!• Code reviews against  DVCS Commits• Developers get used  to the new way • New Commit ids • Committers map t...
Make the Switch• Setup Clones and IDE’s before hand• Make SVN read-only• Go DVCS!                                       22
DVCS is Awesome! • More power = more opportunity to do things faster! • The DAG gives traceability, powerful branching   a...
Questions• Our Blogs: http://blogs.atlassian.com/developer• Mercurial: http://mercurial.selenic.com/ • https://bitbucket.o...
DVCS: Making the move? How Atlassian can help...
DVCS: Making the move? How Atlassian can help...
Upcoming SlideShare
Loading in …5
×

DVCS: Making the move? How Atlassian can help...

1,386 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

DVCS: Making the move? How Atlassian can help...

  1. 1. DVCS: Making the Move?How Atlassian can help...Matthew WatsonFishEye/Crucible Team Lead, Atlassian 2
  2. 2. Why DVCS?• Lots of people excited by it• Huge in Open Source• But what about Commercial in-house development?• What about the costs of migrating? 3
  3. 3. What’s Great about DVCS?• Work offline• Easier branching and merging• Github and Bitbucket• Do we really need this? 4
  4. 4. What’s really cool about DVCS!• What does ‘D’ in DVCS stand for? 5
  5. 5. What’s really cool about DVCS!• What does ‘D’ in DVCS stand for?• Distributed • Commit often, push when ready • Fast, peer-to-peer, no central server • Flexibility: Clones vs Branches 5
  6. 6. What’s really cool about DVCS?• What should the ‘D’ in DVCS stand for? 6
  7. 7. What’s really cool about DVCS?• What should the ‘D’ in DVCS stand for?• DAG = Directed Acyclic Graph Time • No loops • Each commit has 1 or more parents • Commits uniquely identified 6
  8. 8. SVN Commits Bob Mary Will r38 7
  9. 9. SVN Commits A.java Bob Mary Will r38 r39 7
  10. 10. SVN Commits A.java Bob B.java Mary Will r38 r39 r40 7
  11. 11. SVN Commits A.java Bob B.java Mary C.java Will r38 r39 r40 r41 7
  12. 12. SVN Commits Will svn commit svn update A.java r38 B.java r38 C.java r41 8
  13. 13. SVN Commits Will svn commit svn update A.java r38 r39 B.java r38 r40 C.java r41 r41 8
  14. 14. DAG Commits 38:fb38fed187ab 9
  15. 15. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b 9
  16. 16. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 9
  17. 17. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 Will C.java 41:38ff647618b5 9
  18. 18. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 42:7d0e20243949 Will C.java 41:38ff647618b5 9
  19. 19. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 42:7d0e20243949 Will C.java 41:38ff647618b5 43:5fcdd3657717 9
  20. 20. The Power of the DAG• Deterministic• Annotate/blame works!• Easy and powerful merges - Don’t be scared of long running branches!• Easy and powerful branching 10
  21. 21. Traceability• In SVN/CVS etc merges hide what happened Time• In DVCS, the DAG lets you see exactly what changed 11
  22. 22. Flexibility• Single Integrator, Gatekeeper• Feature branches, git-flow• Clones• Automation• No central repository 12
  23. 23. Workflows, Workflows, Workflows• Which workflow to use?• “With Great Power there must also come - Great Responsibility!” - Spider Man?• Take your time! 13
  24. 24. Feature Branching• Branching and merging cheap and easy Time• All feature work done on branch• Can merge to any descendant 14
  25. 25. Feature Branching Workflow default Time 15
  26. 26. Feature Branching Workflow Create Feature Branch FE-143FE-143 default Time 15
  27. 27. Feature Branching Workflow Squash Bugs!FE-143 default Time 15
  28. 28. Feature Branching WorkflowFE-127 Complete FE-127FE-143 default Time 15
  29. 29. Feature Branching Workflow Merge latest from default, build, test andFE-127FE-143 default Time 15
  30. 30. Feature Branching Workflow Merge to default, close JIRA, set fix versionFE-127FE-143 default Time 15
  31. 31. Feature Branching WorkflowFE-127 Stable code!FE-143 default Time 15
  32. 32. Cross Branch Dependencies• Can merge to any downstream branch• Easily merge fixes for releases into subsequent versions• Also works for feature branches• Our code is naturally becoming more stable 16
  33. 33. Migrating to DVCS• Which DVCS?• Small team - just go for it!• Large team - Don’t Fu$%! your devspeed!• Our goal - Zero downtime 17
  34. 34. Sync from SVN• Git SVN and HgSubversion • Incremental conversion• Remap Committers • mwatson = Matthew Watson <mwatson@atlassian.com>• Build Processes 18
  35. 35. Use Continuous Integration!• Vital part of dev cycle• Run same builds against old and new VCS• Continuous Validation 19
  36. 36. Use FishEye!• Sales Pitch• Commit Graph• See your commits in SVN and DVCS 20
  37. 37. Use Crucible!• Code reviews against DVCS Commits• Developers get used to the new way • New Commit ids • Committers map to Users 21
  38. 38. Make the Switch• Setup Clones and IDE’s before hand• Make SVN read-only• Go DVCS! 22
  39. 39. DVCS is Awesome! • More power = more opportunity to do things faster! • The DAG gives traceability, powerful branching and merging, speed • Migrating is easy! @mattw_watson #summit11 23
  40. 40. Questions• Our Blogs: http://blogs.atlassian.com/developer• Mercurial: http://mercurial.selenic.com/ • https://bitbucket.org/durin42/hgsubversion/overview/• Git: http://git-scm.com • http://www.kernel.org/pub/software/scm/git/docs/git-svn.html • http://john.albin.net/git/convert-subversion-to-git • http://nvie.com/posts/a-successful-git-branching-model/ 24

×