SlideShare ist ein Scribd-Unternehmen logo
1 von 42
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

Weitere ähnliche Inhalte

Ähnlich wie DVCS: Making the move? How Atlassian 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 DecisionsJonathan Hitchcock
 
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 systemGilad 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
 
Putting Cake into your CI
Putting Cake into your CIPutting Cake into your CI
Putting Cake into your CIMark Baker
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro 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 GitNick Quaranto
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull requestBryan Liu
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011Kris Mok
 
Git Basics at Rails Underground
Git Basics at Rails UndergroundGit Basics at Rails Underground
Git Basics at Rails UndergroundAriejan 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 PettersenAtlassian
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019RackN
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by dockerWei-Ting Kuo
 

Ähnlich wie DVCS: Making the move? How Atlassian 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
 

Mehr von Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Mehr von Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Kürzlich hochgeladen

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Kürzlich hochgeladen (20)

unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

DVCS: Making the move? How Atlassian 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

Hinweis der Redaktion

  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