SlideShare une entreprise Scribd logo
1  sur  54
Making the Switch to DVCS
     How Atlassian teams moved from centralised to
     distributed version control



John Stevenson
Developing the Atlassian UK Community
                                        blog.jr0cket.co.uk
                                                 @jr0cket
                                                       1
The challenge ?
Centralised Version Control

          Subversion
Centralised Version Control

          Subversion
Subversion issues
• Long lived branching
  causing Merging hell
• <3 month release
  cycles painful
• Fear of breaking the
  build
 • delayed commits lead
   to more merging hell
Subversion issues
• Long lived branching
  causing Merging hell
• <3 month release
  cycles painful
• Fear of breaking the
  build
 • delayed commits lead
   to more merging hell
Enhancing the Atlassian
  development cycle
      with DVCS
Atlassian DVCS recipe
Atlassian DVCS recipe



         Practices
Learn the new workflow
Incremental change

 • Try on small projects
 • Create test environment
   for tools
 • Start with git svn
Bringing our history with us
Bringing our history with us
Modularise your repos

                Break big Subversion projects
                into smaller DVCS repos

                Ensure a modular design for
                your application
Distributed Code
Repositories
Managing distributed
projects
Social coding = cross-team
        collaboration
Social coding = cross-team
        collaboration
Social coding = cross-team
        collaboration
Code
without
Limitations

• Fork & Clone
• Repositories are cheap,
  don't be afraid to mess up
Commit Early,
Commit Often
Sharing DVCS experiences
                       Specialised teams
                       Build team
                       Deployment
                       User Experience
                       (UX)
                       Operations
Sharing DVCS experiences
                       Specialised teams
                       Build team
                       Deployment
                       User Experience
                       (UX)
                       Operations
Continuous Deployment

         verses

(Large) Feature Branching
Confluence team moving to
          DVCS
•2 week iterations
•Continuous deployment


•http://blogs.atlassian.com/2012/01/
 moving-confluence-from-subversion-to-
 git/
Git Integration with the
      build pipeline
Link commits to
   JIRA issues
Link commits to
   JIRA issues
Not just the command line
Not just the command line
Not just the command line




     The command line is like Marmite...
Git and Mercurial Mac Client
Git and Mercurial Mac Client
View File History
Viewing Changes
Visualising code
Enterprise Git repository management




Manage your internal
repositories
•browse recent commits
•inspect change history
•explore change sets & annotated code
Source code accessible by release
managers, testers & other team
members
Source code disinfectant
Source code disinfectant
Continuous Integration and
release management

• Run same builds against
  subversion and git
• Continuous Validation
• Separate repos for integration
Continuous Integration and
release management

• Run same builds against
  subversion and git
• Continuous Validation
• Separate repos for integration
Separate Repo for Building




Collaboration   History of changes   Multiple copies
Separate Repo for Building




Collaboration   History of changes   Multiple copies
Continuous Integration Stages
                                     The "Gatekeeper"
                                     • Merges changes from your
                                       branch into the main line and
                                       builds the result. 
                                     • Successful code is committed
                                       and pushed

Automated branch detection
                                     The "Build Updater"
Branch Plans automatically inherit   • Merges the main line into the
master plan config changes              branch, and builds the
                                       combined code. 
                                     • Successful code is committed
                                       & pushed to branch, ensuring
                                       longer-living branches don't
                                       stray far from trunk.
Branching and auto-merging
                                     The "Gatekeeper"
                                     • Merges changes from your
                                       branch into the main line and
                                       builds the result. 

Automated branch detection           • Successful code is committed
                                       and pushed
Branch Plans automatically inherit
master plan config changes            The "Build Updater"
                                     • Merges the main line into the
                                       branch, and builds the
                                       combined code. 
                                     • Successful code is committed
                                       & pushed to branch, ensuring
                                       longer-living branches don't
                                       stray far from trunk.
Atlassian DVCS
Atlassian DVCS


         Benefits
Benefit: Developer Speed
• Common approach, running faster
• Fast tools = happy developers
• Complete history at hand
Benefit: Developer Speed
• Common approach, running faster
• Fast tools = happy developers
• Complete history at hand
Benefit: Fast Feedback
• More lessons learnt
• Issues resolved more timely
• Less risk and impact to a project
• More in tune with customers
Benefit: Fast Feedback
• More lessons learnt
• Issues resolved more timely
• Less risk and impact to a project
• More in tune with customers
Shaping the future of DVCS
Thank you

blogs.atlassian.com
sourcetreeapp.com

   blog.jr0cket.co.uk
            @jr0cket

Contenu connexe

Tendances

VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern ApplicationsVMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
Puppet
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
Rick Hightower
 

Tendances (20)

Introducing Serena Dimensions CM 14, Discussion and product demonstration (We...
Introducing Serena Dimensions CM 14, Discussion and product demonstration (We...Introducing Serena Dimensions CM 14, Discussion and product demonstration (We...
Introducing Serena Dimensions CM 14, Discussion and product demonstration (We...
 
Iltam database version control
Iltam database version controlIltam database version control
Iltam database version control
 
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
DevOps Drive-In: Automate Database Deployments in Your Continuous Delivery Pi...
 
UrbanCode Deploy and Docker Containers Connect the Dots
UrbanCode Deploy and Docker Containers Connect the DotsUrbanCode Deploy and Docker Containers Connect the Dots
UrbanCode Deploy and Docker Containers Connect the Dots
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional test
 
Forbidden fruits of Active Directory – Cloning, snapshotting, virtualization
Forbidden fruits of Active Directory  –  Cloning, snapshotting, virtualization Forbidden fruits of Active Directory  –  Cloning, snapshotting, virtualization
Forbidden fruits of Active Directory – Cloning, snapshotting, virtualization
 
Microsoft TechDays 2013 - IT Pro Keynote
Microsoft TechDays 2013 - IT Pro KeynoteMicrosoft TechDays 2013 - IT Pro Keynote
Microsoft TechDays 2013 - IT Pro Keynote
 
Agile Operations or How to sleep better at night
Agile Operations or How to sleep better at nightAgile Operations or How to sleep better at night
Agile Operations or How to sleep better at night
 
DevOps for Azure
DevOps for AzureDevOps for Azure
DevOps for Azure
 
8 Tools for Troubleshooting Windows 8
8 Tools for Troubleshooting Windows 8 8 Tools for Troubleshooting Windows 8
8 Tools for Troubleshooting Windows 8
 
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
Synergy 2015 Session Slides: SYN408 XenDesktop 7.6 Architecture - Dealing Wit...
 
TheTricky Bits of Deployment Automation
TheTricky Bits of Deployment Automation TheTricky Bits of Deployment Automation
TheTricky Bits of Deployment Automation
 
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview
 
VMworld Europe 2014: Ask the Experts - Design Advice for Small and Midsize Bu...
VMworld Europe 2014: Ask the Experts - Design Advice for Small and Midsize Bu...VMworld Europe 2014: Ask the Experts - Design Advice for Small and Midsize Bu...
VMworld Europe 2014: Ask the Experts - Design Advice for Small and Midsize Bu...
 
Docker CI at ANZ
Docker CI at ANZDocker CI at ANZ
Docker CI at ANZ
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
 
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern ApplicationsVMware and Puppet: How to Plan, Deploy & Manage Modern Applications
VMware and Puppet: How to Plan, Deploy & Manage Modern Applications
 
Flintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test LabFlintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test Lab
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
 
Tmh02 vdi image_optimization_and_troubleshooting - Jeff Stokes
Tmh02 vdi image_optimization_and_troubleshooting - Jeff StokesTmh02 vdi image_optimization_and_troubleshooting - Jeff Stokes
Tmh02 vdi image_optimization_and_troubleshooting - Jeff Stokes
 

En vedette

En vedette (7)

London Salesforce Developers Meetup January 2013
London Salesforce Developers Meetup January 2013London Salesforce Developers Meetup January 2013
London Salesforce Developers Meetup January 2013
 
Clojure made really really simple
Clojure made really really simpleClojure made really really simple
Clojure made really really simple
 
JIRA 5 collaborative platform
JIRA 5 collaborative platformJIRA 5 collaborative platform
JIRA 5 collaborative platform
 
Building the Atlassian Community in the UK
Building the Atlassian Community in the UKBuilding the Atlassian Community in the UK
Building the Atlassian Community in the UK
 
Clojure made simple - Lightning talk
Clojure made simple - Lightning talkClojure made simple - Lightning talk
Clojure made simple - Lightning talk
 
Developer week EMEA - Salesforce1 Mobile App overview
Developer week EMEA - Salesforce1 Mobile App overviewDeveloper week EMEA - Salesforce1 Mobile App overview
Developer week EMEA - Salesforce1 Mobile App overview
 
Getting into public speaking at conferences
Getting into public speaking at conferencesGetting into public speaking at conferences
Getting into public speaking at conferences
 

Similaire à How Atlassian made the switch to DVCS

Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
XebiaLabs
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Atlassian
 

Similaire à How Atlassian made the switch to DVCS (20)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
SQL Server DevOps Jumpstart
SQL Server DevOps JumpstartSQL Server DevOps Jumpstart
SQL Server DevOps Jumpstart
 
Source control - what you need to know
Source control - what you need to knowSource control - what you need to know
Source control - what you need to know
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
 
Continuous Integration as a Way of Life
Continuous Integration as a Way of LifeContinuous Integration as a Way of Life
Continuous Integration as a Way of Life
 
[WSO2Con EU 2017] Continuous Integration, Delivery and Deployment: Accelerate...
[WSO2Con EU 2017] Continuous Integration, Delivery and Deployment: Accelerate...[WSO2Con EU 2017] Continuous Integration, Delivery and Deployment: Accelerate...
[WSO2Con EU 2017] Continuous Integration, Delivery and Deployment: Accelerate...
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Atlassian Developers switch to DVCS - Unite London conference
Atlassian Developers switch to DVCS - Unite London conferenceAtlassian Developers switch to DVCS - Unite London conference
Atlassian Developers switch to DVCS - Unite London conference
 
Continuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and DeployitContinuous delivery with Jenkins Enterprise and Deployit
Continuous delivery with Jenkins Enterprise and Deployit
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
Build it, Test it, Ship it: Continuous Delivery at Turner Broadcasting System...
 
Data harmony update 2021
Data harmony update 2021 Data harmony update 2021
Data harmony update 2021
 
Enter the Team City
Enter the Team CityEnter the Team City
Enter the Team City
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team City
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Automated Build using teamcity
Automated Build using teamcityAutomated Build using teamcity
Automated Build using teamcity
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 

Plus de John Stevenson

Plus de John Stevenson (20)

ClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of ClojureClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of Clojure
 
Confessions of a developer community builder
Confessions of a developer community builderConfessions of a developer community builder
Confessions of a developer community builder
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in ClojurescriptProgscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
 
Introduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with ClojurescriptIntroduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with Clojurescript
 
Thinking Functionally with Clojure
Thinking Functionally with ClojureThinking Functionally with Clojure
Thinking Functionally with Clojure
 
Communication improbable
Communication improbableCommunication improbable
Communication improbable
 
Functional web with clojure
Functional web with clojureFunctional web with clojure
Functional web with clojure
 
Get into Functional Programming with Clojure
Get into Functional Programming with ClojureGet into Functional Programming with Clojure
Get into Functional Programming with Clojure
 
Guiding people into Clojure
Guiding people into ClojureGuiding people into Clojure
Guiding people into Clojure
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern Developer
 
Get Functional Programming with Clojure
Get Functional Programming with ClojureGet Functional Programming with Clojure
Get Functional Programming with Clojure
 
So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?
 
Trailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudTrailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App Cloud
 
Clojure for Java developers
Clojure for Java developersClojure for Java developers
Clojure for Java developers
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platform
 
Dreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version ControlDreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version Control
 
Getting started with Clojure
Getting started with ClojureGetting started with Clojure
Getting started with Clojure
 
Salesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - IntroductionSalesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - Introduction
 
Heroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & servicesHeroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & services
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 Platform
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

How Atlassian made the switch to DVCS

Notes de l'éditeur

  1. We want to share our experience of our move to DVCS\n- talking about why we did it, \n- how we did it and \n- what benefits we got from it.\n\n[Quick slide to make sure people are settled and know what they are about to hear]\n
  2. Using Beef as a more colourful term for problem, to follow the UK theme of changing the guards (beefeaters)\n\n\n
  3. With a centralised server, everyone shares the same resource. Its like going to a all you can eat buffet, anyone can go up to buffet at any time and make a change, but if two people want the last slice of peperoni pizza you have a conflict.\n\nIts not quite that bad for developers (we seem to have a never ending supply of pizza)\n\nIf two developers make a changes to the same part of the code they could create a conflict when they both attempt to save those changes back to the repository. The bigger they changes they make, the more risk of conflict they have with changes from one or more other developers.\n\nUsing a central model is how Atlassian teams used to work and it could make us all very angry nerds some times.\n\n\n
  4. With a centralised server, everyone shares the same resource. Its like going to a all you can eat buffet, anyone can go up to buffet at any time and make a change, but if two people want the last slice of peperoni pizza you have a conflict.\n\nIts not quite that bad for developers (we seem to have a never ending supply of pizza)\n\nIf two developers make a changes to the same part of the code they could create a conflict when they both attempt to save those changes back to the repository. The bigger they changes they make, the more risk of conflict they have with changes from one or more other developers.\n\nUsing a central model is how Atlassian teams used to work and it could make us all very angry nerds some times.\n\n\n
  5. Subversion is still used by a lot of developers, even though they regularly have issues with merging all the code together from each developer. As subversion only understands changes to individual files, it takes a lot of communication for a development team to not stand on each others toes when working on the same product.\n\nWhen using subversion, you have one server you connect with to save all your changes. All the changes have to be in sync with each other. If two developers work on the same code and want to commit their changes, considerable effort can be involved to merge all these changes into subversion.\n\nWhen you also have a continuous integration server attached to your subversion server, developers can become concerned about breaking the build and often delay checkin in code, making it harder to merge all these changes together.\n\nUsing DVCS, you encourage developers to commit their changes constantly.\n\n
  6. The basics of how we have enhanced the way we develop software at Atlassian.\n\nA slide to just take a quick breath and see how people are doing...\n
  7. Walk through the main idea of a central server - SVN style. Mention others - CVS, P4, ClearCase\n\nMost people are familiar with the centralized version controls of the world - SVN, P4, CVS\nDescribe centralized versions control with SVN (image of how it works)\nThis what Atlassian was doing across a majority of our product teams teams\n\n\n\n
  8. Share the knowledge around the team\n\n\n
  9. The way you work with DVCS commands (for both Git &amp; Mercurial) are very similar to the subversion and CVS commands used. As DVCS has an additional remote repository (usually called the origin in Open Source projects) there is one extra optional step.\n\nIf you do not need to share your whole repository with anyone, there is no need to push your repository to another one.\n\nIf you want to submit a simple change, you can package it up as a pull request - a request to have your specific change pulled into someone elses repository. For example if you fork someones project on Bitbucket, making a copy that has a link back to the original repository, you can make changes to your copy of the code, commit them to your own repository and then create a pull request using the magic button on Bitbucket to send a message back to the owner of the repository. If the owner likes your change, it will be added into their repository and become officially part of the project.\n\n\n
  10. Using a good tool you can start using the power of DVCS whist still having a subversion repository. Using things like GitSVN you can have local git repos that will push to a subversion.\n\nGive developers a chance to learn the tools well, so you are not slowing down the development process or making it too frustrating.\n\nDVCS is a new skill, so give your teams time to adopt.\n
  11. Bring as much of the history from Subversion as you can, its an important record of your development.\n\nMake sure code is checked into the subversion, then make it read only\n
  12. Bring as much of the history from Subversion as you can, its an important record of your development.\n\nMake sure code is checked into the subversion, then make it read only\n
  13. \n
  14. Every developer can create a copy of a DVCS repository on their own PC, this is called a clone. The cloned repository has the full history of the original repository and so you can trace back through all the changes that were ever done for that project.\n\nAs we are using change sets to record the change rather than individual file changes, then it is easier to manage many different branches (Forks), especially when using pull requests.\n\nPull requests give an opportunity for code review, integration testing and continuous integration builds to run.\n\n
  15. DVCS and the rise of services like Bitbucket have helped evolve open source projects to a new level of social coding.\n\nDevelopers across the world can quickly share their code with everyone, anyone can take that code and change it, then send a message to say hey &amp;#x201C;I found a bug in your code, here is a fix for it&amp;#x201D;\n\nThis social coding is obviously great for open source project acceleration, as many hands get more work done. This is main reason why so many projects have switched. \n\nFor enterprises this sharing of code supports innovation and promotes collaboration within an organisation. With a private repository from Bitbucket, a team can share their code safely within the organisation and create high quality software products.\n
  16. DVCS and the rise of services like Bitbucket have helped evolve open source projects to a new level of social coding.\n\nDevelopers across the world can quickly share their code with everyone, anyone can take that code and change it, then send a message to say hey &amp;#x201C;I found a bug in your code, here is a fix for it&amp;#x201D;\n\nThis social coding is obviously great for open source project acceleration, as many hands get more work done. This is main reason why so many projects have switched. \n\nFor enterprises this sharing of code supports innovation and promotes collaboration within an organisation. With a private repository from Bitbucket, a team can share their code safely within the organisation and create high quality software products.\n
  17. Everything is on your own machine - don&amp;#x2019;t be afraid to mess up, it is easy to get back into a stage where things are stable.\n
  18. Be a coding ninja and commit all your changes early and often. Typically you write a failing unit test, then commit. Write some code to pass the tests and then commit. Think about refactoring and the start all over again.\n\nSome developers say the code is the documentation, but the code is just the present. By giving meaningful commit messages anyone can review the code and have a better understanding of how that code evolved.\n
  19. Include a person of experience with DVCS in the team\nThe knowledge and experience spreads round the team\nMove people with DVCD experience around teams\n
  20. \n
  21. Naturally, as we use DVCS ourselves, all our products work with DVCS tools.\n
  22. Share the knowledge around the team\n\n\n
  23. Show how you write JIRA issue numbers in your commit statements to link up your commits with the issues in JIRA that commit addresses.\n\nThen cover how Crucible uses that JIRA number in commit to help you find the right review\n
  24. Previously we showed the commands for git you enter on your operating system command line, you can uses visual tools like SourceTree from Atlassian to manage the whole workflow.\n\nIt seems the command line is like Marmite, you either love it or hate it. [Add your own opinion here if you wish]\n
  25. Previously we showed the commands for git you enter on your operating system command line, you can uses visual tools like SourceTree from Atlassian to manage the whole workflow.\n\nIt seems the command line is like Marmite, you either love it or hate it. [Add your own opinion here if you wish]\n
  26. Using SourceTree to help us work with our code in DVCS systems so we don&amp;#x2019;t have to learn the command line.\n\n
  27. Using SourceTree to help us work with our code in DVCS systems so we don&amp;#x2019;t have to learn the command line.\n\n
  28. View file history \nView authors/blame - BB or Stash\nSwitching/creating a branch - BB\n\n\n
  29. View file history \nView authors/blame - BB or Stash\nSwitching/creating a branch - BB\nListing Tags\n\n
  30. View file history \nView authors/blame - BB or Stash\nSwitching/creating a branch - BB\nListing Tags\n\n
  31. \n
  32. Show how you write JIRA issue numbers in your commit statements to link up your commits with the issues in JIRA that commit addresses.\n\nThen cover how Crucible uses that JIRA number in commit to help you find the right review\n
  33. [Add stuff about crucible and DVCS]\n
  34. \n
  35. - A place where the team can work together\nEverybody can work on the same code base and get changes from other team mates\n\n- Time Machine\nYou can go back in time - if you want the code base of an older version, you can get it out of the version control system.\n\n- Make duplicates\nMaking a copy of the code and work on that\n
  36. \n
  37. \n
  38. Share the knowledge around the team\n\n\n
  39. I got the need, the need for SPEED (we like to drive fast)\n Common commands, just faster - status, log, commit, branch/merge are instantaneous\n The speed with which DVCS carries out common tasks lowers the bar and encourages developers in making use of those procedures. That, in turn, means that teams are using their version control system in more versatile and effective ways.\n Dev history without going over the network\nFast tool = Happy Developers\n No Servers bogging you down - push when you are ready\n Commit often\n Use the features instead of bypassing them bc they are slow\nCode without limitations\n Do &quot;stuff&quot; after the fact\n apply changes to a different branch &lt;cmd&gt;\n need more here....\n Jump between and modify branches\n need more here...\n \nAs stated in the previous slides, common commands become useful again. When commands are instantaneous that are used more often than not. Think back to any fuction in JIRA or Confluence...if they were not easily accesible you may not use them. Same with version control - if they take time or the commands are advanced you may not use the full power of the technology.\n\n\nYou will use the command line as its faster ???\n\n\nExample to give ambassadors context: Working without a network connection to your subversion repository is more than just committing the changes. If you make a mistake in a file or try a spike solution, and want to start over, you can&amp;#x2019;t until the network returns. If you want to diff between previous versions to help find a problem, you can&amp;#x2019;t until the network returns.\n\nDVCS allows you to utilize version control during your development without contaminating the team repository.\n
  40. Developers have a clearer understanding of the impact of their work, both in the benefits they deliver to the customers and the potential problems if issues should arise.\n\nMore lessons learnt throughout the whole company. Small changes that build on each other are easier to absorb and get meaningful feedback, in a way that a big bang approach does not.\n\nFeeback from customers (dogfooding or OnDemand) make better products as Atlassian has a better understanding of the customer experience.\n
  41. Instead of one big repository, the common approach is to split your code up into a more modular set of components or plugins - this is the way that Atlassian have been working for a while. In JIRA and Confluence, nearly everything is a plugin, even if it is a core part of the product.\n\nInstead of three month projects (97 days at Atlassian) a two week iteration is now running for development teams, allowing much quicker feedback from the rest of Atlassian. \n\nAs a developer you learn so much more the sooner you get feedback from your code. Code reviews are a great example of this, as are unit tests. However, there is no greater feedback than someone actually using your code day in day out. As we dogfood our products at Atlassian, any new features have over 400 eyes on them a few days after they were written and we can give feedback to the developers whilst they still remember clearly how they created those features.\n\nAn increased feedback cycle spawns more collaboration and innovation throughout Atlassian, as new features lead on to new ideas.\n\n
  42. Now we are supporting developers directly and helping shape the future of code versioning with Bitbucket and SourceTree, a great pair of DVCS tools to help developers get work done.\n\nUsing these tools we improve the way developers manage all the changes around all of the projects they work on, from code, configurations, web artifacts, images, etc.\n\nI hope to show that using DVCS for your versioning provides real business benefit to your organisation and makes your developers happy nerds.\n
  43. \n