SlideShare a Scribd company logo
DVCS: Making the Move?
How Atlassian can help...




Matthew Watson
FishEye/Crucible Team Lead, Atlassian

                                        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
What’s Great about DVCS?
• Work offline
• Easier branching and merging
• Github and Bitbucket
• Do we really need this?



                                 4
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-to-peer, no central server
 • Flexibility: Clones vs Branches

                                           5
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




                                       Time
 • No loops

 • Each commit has 1 or more parents

 • Commits uniquely identified

                                              6
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

                                            7
SVN Commits
              A.java
 Bob

                             B.java
 Mary

                                            C.java
 Will


        r38            r39            r40            r41

                                                           7
SVN Commits

   Will   svn commit   svn update

          A.java r38
          B.java r38
          C.java r41



                                    8
SVN Commits

   Will   svn commit   svn update

          A.java r38      r39
          B.java r38      r40
          C.java r41      r41



                                    8
DAG Commits
 38:fb38fed187ab




                   9
DAG Commits
                        Bob
 38:fb38fed187ab       A.java

                   39:bb0760b60a8b




                                     9
DAG Commits
                        Bob
 38:fb38fed187ab       A.java

                   39:bb0760b60a8b
                           Mary
                           B.java

                      40:d0f08ba891a0




                                        9
DAG Commits
                        Bob
 38:fb38fed187ab       A.java

                   39:bb0760b60a8b
                           Mary
                           B.java

                      40:d0f08ba891a0
                                Will
                               C.java

                           41:38ff647618b5
                                             9
DAG Commits
                        Bob
 38:fb38fed187ab       A.java

                   39:bb0760b60a8b
                           Mary
                           B.java

                      40:d0f08ba891a0 42:7d0e20243949
                                Will
                               C.java

                           41:38ff647618b5
                                                        9
DAG Commits
                        Bob
 38:fb38fed187ab       A.java

                   39:bb0760b60a8b
                           Mary
                           B.java

                      40:d0f08ba891a0 42:7d0e20243949
                                Will
                               C.java

                           41:38ff647618b5       43:5fcdd3657717
                                                                   9
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
Traceability
• In SVN/CVS etc merges hide
  what happened




                                  Time
• In DVCS, the DAG lets you see
  exactly what changed




                                         11
Flexibility

• Single Integrator, Gatekeeper
• Feature branches, git-flow
• Clones
• Automation
• No central repository

                                  12
Workflows, Workflows, Workflows
• Which workflow to use?
• “With Great Power there must also come - Great
  Responsibility!” - Spider Man?
• Take your time!




                                                   13
Feature Branching
• Branching and merging cheap
  and easy




                                    Time
• All feature work done on branch
• Can merge to any descendant



                                           14
Feature Branching Workflow




 default


       Time



                             15
Feature Branching Workflow
              Create Feature Branch
                     FE-143



FE-143


 default


       Time



                                      15
Feature Branching Workflow
                Squash Bugs!




FE-143


 default


       Time



                               15
Feature Branching Workflow

FE-127
                    Complete FE-127
FE-143


 default


       Time



                                      15
Feature Branching Workflow
                   Merge latest from
                 default, build, test and
FE-127


FE-143


 default


       Time



                                            15
Feature Branching Workflow
                    Merge to default, close
                     JIRA, set fix version
FE-127


FE-143


 default


       Time



                                              15
Feature Branching Workflow

FE-127
                        Stable code!
FE-143


 default


       Time



                                       15
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
Migrating to DVCS
• Which DVCS?
• Small team - just go for it!
• Large team - Don’t Fu$%! your devspeed!
• Our goal - Zero downtime



                                            17
Sync from SVN
• Git SVN and HgSubversion
 • Incremental conversion

• Remap Committers
 • mwatson = Matthew Watson <mwatson@atlassian.com>

• Build Processes

                                                      18
Use Continuous Integration!
• Vital part of dev cycle
• Run same builds against old
  and new VCS
• Continuous Validation



                                19
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 to
   Users
                         21
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
   and merging, speed
 • Migrating is easy!
  @mattw_watson #summit11


                                                        23
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

More Related Content

Similar to Migrating to DVCS: Why You should do it and how Atlassian's tools can help

Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
Jonathan Hitchcock
 
Pluginize ALL the things
Pluginize ALL the thingsPluginize ALL the things
Pluginize ALL the things
Jose Diaz-Gonzalez
 
Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0
Matthew McCullough
 
Tunnel without tunnel
Tunnel without tunnelTunnel without tunnel
Tunnel without tunnel
Andrew Yongjoon Kong
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control system
Gilad Garon
 
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
HAProxy Technologies
 
Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1
Matthew McCullough
 
Putting Cake into your CI
Putting Cake into your CIPutting Cake into your CI
Putting Cake into your CI
Mark Baker
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
Taro L. Saito
 
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
OpenStack Korea Community
 
Are you ready for cloud-native Java?
Are you ready for cloud-native Java?Are you ready for cloud-native Java?
Are you ready for cloud-native Java?
Graham Charters
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Peter Leschev
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
Nick Quaranto
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
Bryan Liu
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
Kris Mok
 
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails Underground
Ariejan de Vroom
 
A Business Case for Git - Tim Pettersen
A Business Case for Git - Tim PettersenA Business Case for Git - Tim Pettersen
A Business Case for Git - Tim Pettersen
Atlassian
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019
RackN
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by dockerWei-Ting Kuo
 

Similar to Migrating to DVCS: Why You should do it and how Atlassian's tools can help (20)

Clearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad DecisionsClearly, I Have Made Some Bad Decisions
Clearly, I Have Made Some Bad Decisions
 
Pluginize ALL the things
Pluginize ALL the thingsPluginize ALL the things
Pluginize ALL the things
 
Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0Git Going with DVCS v1.6.0
Git Going with DVCS v1.6.0
 
Tunnel without tunnel
Tunnel without tunnelTunnel without tunnel
Tunnel without tunnel
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control system
 
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
MariaDB Replication manager and HAProxy (HAProxy Paris Meetup)
 
Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1Git Going With DVCS v1.5.1
Git Going With DVCS v1.5.1
 
Putting Cake into your CI
Putting Cake into your CIPutting Cake into your CI
Putting Cake into your CI
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
[2018.10.19] Andrew Kong - Tunnel without tunnel (Seminar at OpenStack Korea ...
 
Are you ready for cloud-native Java?
Are you ready for cloud-native Java?Are you ready for cloud-native Java?
Are you ready for cloud-native Java?
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
 
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails Underground
 
A Business Case for Git - Tim Pettersen
A Business Case for Git - Tim PettersenA Business Case for Git - Tim Pettersen
A Business Case for Git - Tim Pettersen
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019
 
Using Hg
Using HgUsing Hg
Using Hg
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by docker
 

Recently uploaded

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

Migrating to DVCS: Why You should do it and how Atlassian's tools can help

  • 1.
  • 2.
  • 3. DVCS: Making the Move? How Atlassian can help... Matthew Watson FishEye/Crucible Team Lead, Atlassian 2
  • 4. 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
  • 5. What’s Great about DVCS? • Work offline • Easier branching and merging • Github and Bitbucket • Do we really need this? 4
  • 6. What’s really cool about DVCS! • What does ‘D’ in DVCS stand for? 5
  • 7. 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
  • 8. What’s really cool about DVCS? • What should the ‘D’ in DVCS stand for? 6
  • 9. 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
  • 10. SVN Commits Bob Mary Will r38 7
  • 11. SVN Commits A.java Bob Mary Will r38 r39 7
  • 12. SVN Commits A.java Bob B.java Mary Will r38 r39 r40 7
  • 13. SVN Commits A.java Bob B.java Mary C.java Will r38 r39 r40 r41 7
  • 14. SVN Commits Will svn commit svn update A.java r38 B.java r38 C.java r41 8
  • 15. SVN Commits Will svn commit svn update A.java r38 r39 B.java r38 r40 C.java r41 r41 8
  • 17. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b 9
  • 18. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 9
  • 19. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 Will C.java 41:38ff647618b5 9
  • 20. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 42:7d0e20243949 Will C.java 41:38ff647618b5 9
  • 21. DAG Commits Bob 38:fb38fed187ab A.java 39:bb0760b60a8b Mary B.java 40:d0f08ba891a0 42:7d0e20243949 Will C.java 41:38ff647618b5 43:5fcdd3657717 9
  • 22. 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
  • 23. Traceability • In SVN/CVS etc merges hide what happened Time • In DVCS, the DAG lets you see exactly what changed 11
  • 24. Flexibility • Single Integrator, Gatekeeper • Feature branches, git-flow • Clones • Automation • No central repository 12
  • 25. Workflows, Workflows, Workflows • Which workflow to use? • “With Great Power there must also come - Great Responsibility!” - Spider Man? • Take your time! 13
  • 26. Feature Branching • Branching and merging cheap and easy Time • All feature work done on branch • Can merge to any descendant 14
  • 27. Feature Branching Workflow default Time 15
  • 28. Feature Branching Workflow Create Feature Branch FE-143 FE-143 default Time 15
  • 29. Feature Branching Workflow Squash Bugs! FE-143 default Time 15
  • 30. Feature Branching Workflow FE-127 Complete FE-127 FE-143 default Time 15
  • 31. Feature Branching Workflow Merge latest from default, build, test and FE-127 FE-143 default Time 15
  • 32. Feature Branching Workflow Merge to default, close JIRA, set fix version FE-127 FE-143 default Time 15
  • 33. Feature Branching Workflow FE-127 Stable code! FE-143 default Time 15
  • 34. 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
  • 35. Migrating to DVCS • Which DVCS? • Small team - just go for it! • Large team - Don’t Fu$%! your devspeed! • Our goal - Zero downtime 17
  • 36. Sync from SVN • Git SVN and HgSubversion • Incremental conversion • Remap Committers • mwatson = Matthew Watson <mwatson@atlassian.com> • Build Processes 18
  • 37. Use Continuous Integration! • Vital part of dev cycle • Run same builds against old and new VCS • Continuous Validation 19
  • 38. Use FishEye! • Sales Pitch • Commit Graph • See your commits in SVN and DVCS 20
  • 39. Use Crucible! • Code reviews against DVCS Commits • Developers get used to the new way • New Commit ids • Committers map to Users 21
  • 40. Make the Switch • Setup Clones and IDE’s before hand • Make SVN read-only • Go DVCS! 22
  • 41. 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
  • 42. 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

Editor's Notes

  1. &amp;#x201C;you might be thinking&amp;#x201D;\n
  2. &amp;#x201C;you might be thinking&amp;#x201D;\n
  3. &amp;#x201C;you might be thinking&amp;#x201D;\n
  4. &amp;#x201C;you might be thinking&amp;#x201D;\n
  5. &amp;#x201C;you might be thinking&amp;#x201D;\n
  6. &amp;#x201C;you might be thinking&amp;#x201D;\n
  7. &amp;#x201C;you might be thinking&amp;#x201D;\n
  8. &amp;#x201C;you might be thinking&amp;#x201D;\n
  9. &amp;#x201C;you might be thinking&amp;#x201D;\n
  10. &amp;#x201C;you might be thinking&amp;#x201D;\n
  11. &amp;#x201C;you might be thinking&amp;#x201D;\n
  12. &amp;#x201C;you might be thinking&amp;#x201D;\n
  13. &amp;#x201C;you might be thinking&amp;#x201D;\n
  14. Intro: \nAdvantages of DVCS (git &amp; hg/mercurial) compared to Traditional VCS\nWhat we&amp;#x2019;ve learned about DVCS\nOptions for migrating and our migration\nEnd up thinking migrating to DVCS is awesome idea\nDrop nuggets along the way\n?What VCS&amp;#x2019;s using now?\n?Migrated? Thinking of Migrating?\n
  15. Momentum\n
  16. What do we know is good?\nWork Offline (local commits), easy to create new repo, faster\nEasier branching and merging &amp;#x201C;apparently&amp;#x201D;: Who branches in SVN?\nforks, pull request, OS stuff - new models\n
  17. Distributed:\npush when you want - commit often\ncreate local repos, push to others\nfast, fast history\ndefine clones?\nclones or branches, more flexibility - new workflows (more later)\nNothing compelling yet?\n
  18. * Important: This is what we discovered\n* SVN/CVS: Linear, concurrent changes\n* DAG: Commits built on parent commits - uniquely identified - new commits made by one author only - concurrent commits are merged\n* demonstrate\n
  19. * Linear\n* Overlap unintentionally\n
  20. * Linear\n* Overlap unintentionally\n
  21. * Linear\n* Overlap unintentionally\n
  22. Unintended state\nCI was invented to deal with this\n
  23. Contrast to in SVN, changes made at same time, but appear as logical progression\nDVCS: Commits build on a known state\n
  24. Contrast to in SVN, changes made at same time, but appear as logical progression\nDVCS: Commits build on a known state\n
  25. Contrast to in SVN, changes made at same time, but appear as logical progression\nDVCS: Commits build on a known state\n
  26. Contrast to in SVN, changes made at same time, but appear as logical progression\nDVCS: Commits build on a known state\n
  27. Contrast to in SVN, changes made at same time, but appear as logical progression\nDVCS: Commits build on a known state\n
  28. Lots of merges: yes, but deliberate, tracked, only merge a change once! \nMerging: very powerful - track copies/moves - long running refactoring\nCan &amp;#x201C;branch&amp;#x201D; at any point - each concurrent commit IS a branch - merge to any descendant\n\n
  29. Graph Queries, 20% JIRA integration\nPause\n
  30. distributed nature + DAG = lots of options\nNo-one tells you which one is best!\n\n
  31. Stay with what you know - mimic SVN workflow\n get used to whats possible - devs will experiement\n adapt slowly\n\n
  32. Us: Started using branching -&gt; release &amp; feature branching (all work on releases like this!)\nBranch from earliest common point you might want to merge to\n\n
  33. Review-&gt;Build (BB3.1, 20% project)-&gt;complete merge/fixVersion &amp; close JIRA\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  34. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  35. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  36. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  37. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  38. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  39. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  40. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  41. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  42. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  43. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  44. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  45. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  46. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  47. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  48. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  49. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  50. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  51. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  52. Review-&gt;Build (BB3.1, 20% project)\nFeature branch balance - size - life time - naturally evolve - big work - integrate from stable\n
  53. Works for feature branches too\nDid this on SVN, but as mentioned already - merges only merge new stuff &amp; Traceability\nFeature Branches: can merge to others before integrated to stable\n\n
  54. Options: All in one or gradual\n
  55. Git SVN and HgSubversion allow you to work on a SVN repository using git/hg as a client - also used for converting\nCan pull at will - by setting up a cron job, can continuously pull changes into git/hg - then push them to your hosting service (github/bitbucket)\nCan also remap committer names, exclude file paths, more info on our blogs.\nMigrate any build/release/test processes that rely on the VCS\n\n
  56. \n
  57. RSS feeds of changes, activity streams, URL to changes, Search, Commit Graph\n Get Used to Commit hashes etc.\n
  58. Start doing code reviews against synced DVCS\nDifferences\nEngage developers\n
  59. we very happy, devs sceptical, but now all see benefits\n
  60. Convinced you there is more to DVCS than you might have thought\n
  61. * Slides will be available\n