SlideShare a Scribd company logo
Subversion to Git: A Sugar Story

           John Mertic


                           ©2012 SugarCRM Inc. All rights reserved.
Who Am I?

 !   John Mertic
           !   Contact Info
              !   http://
                  jmertic.wordpress.com
              !   Twitter: @jmertic
              ! jmertic@sugarcrm.com
                  ( SugarCRM )
              ! jmertic@php.net ( PHP )
           !   Community Manager for
               SugarCRM
              !   http://www.sugarcrm.com
              ! http://www.sugarforge.org
              !   Twitter: @sugarcrmdev




2/1/2012                      @2012 SugarCRM Inc. All rights reserved.   2
Why we started looking past Subversion

 !   Merging was painful
          !   Couldn’t easily work on multiple releases at once
          !   Couldn’t do feature branch integration easily
          !   Merging cost us several days of downtime plus integration
              testing
 !   No good way of doing pre-commit reviews
          !   Tried using Review Board for post-commit reviewing, but
              was ineffective
          !   Pre-commit reviews required manual posting of diff files and
              manual merging
 !   Overall, felt Subversion could scale to match our
     growing team.


1/25/12                   ©2011 SugarCRM Inc. All rights reserved.   3
Why git?

 !   Wanted to move towards a
     DVCS tool to support our
     growing team
 !   Best quality of tools and IDE
     plugins across the various
     DVCS tools.
 !   Many team members already
     familiar with git, which helped
     train other team members
 ! GitHub



1/25/12            ©2011 SugarCRM Inc. All rights reserved.   4
1/25/12   ©2011 SugarCRM Inc. All rights reserved.   5
Approaches to SVN to Git Migration

 !   Physically migrate existing
     SVN repository
          !   Helps maintain history
          !   Allows you to quit SVN cold
              turkey




1/25/12                   ©2011 SugarCRM Inc. All rights reserved.   6
1/25/12   ©2011 SugarCRM Inc. All rights reserved.   7
The approach we took

 !   Start fresh with git
          !   Allowed us to re-think our code structure
          !   Got rid of lots of old and unused code
          !   Avoided the problems of doing a migration




1/25/12                  ©2011 SugarCRM Inc. All rights reserved.   8
Import SVN             Have devs
                  Export SVN                 export into             change        Setup SVN
     Create new                                newly                from svn
                   working                                                          mirroring
       git repo
                     copy                    created git           checkouts      from GitHub
                                                repo              to git clones




1/25/12                ©2011 SugarCRM Inc. All rights reserved.             9
Why GitHub?

 !   Wanted offsite secure code hosting provider
 !   Very easy to use web based management of
     repository
          !   ACL
          !   Simple file changes can be done online
          !   Visual history management
 !   SVN read ( and now write ) access for legacy clients
 !   Pull requests and forking made simple
          !   Enables pre-commit reviewing easily




1/25/12                  ©2011 SugarCRM Inc. All rights reserved.   10
How did it go initially?

 !   #wins
          !   Average time to do a merge went down to about an hour
             !    Fewer conflicts
          !   Apply a fix to multiple branches now takes a minute
             !    No longer a manual process
 !   #fails
          !   Had to rethink our initial branching strategy
             !    More on this later
          !   Challenging for developers working on older and newer
              releases at the same time
             !    Resolved once older releases went away
          !   Learning curve for git tools
             !    Took around 6 months before team was really proficient


1/25/12                       ©2011 SugarCRM Inc. All rights reserved.   11
What have we gained?




1/25/12       ©2011 SugarCRM Inc. All rights reserved.   12
Pull Requests!




1/25/12      ©2011 SugarCRM Inc. All rights reserved.   13
Advantages of Pull Requests

 !   More natural approach to pre-commit code reviewing
          !   Uses git forks to enable pushing commits up to main
              repository
 !   Enables true two-way peer review
          !   Inline commenting
          !   Can directly track submitter and reviewer
          !   Easy for submitter to update pull request




1/25/12                   ©2011 SugarCRM Inc. All rights reserved.   14
New initiatives due to Pull Requests

 !   Open+ Developer Program
          !   Enables our VAR and ISV partners to have direct access to
              the Sugar codebase.
          !   They can contribute fixes directly to us that we can review
              and accept into the product
 !   Community Branch
          !   Allows our community members to make pull requests
              against our open source version, that we pull into the
              product
 !   Both initiatives has resulted in over 100 code
     contributions over the last year, over 5x as much as
     the previous year.


1/25/12                   ©2011 SugarCRM Inc. All rights reserved.   15
Change in branching strategy




1/25/12     ©2011 SugarCRM Inc. All rights reserved.   16
What we did back in SVN




1/25/12     ©2011 SugarCRM Inc. All rights reserved.   17
Now what we can do with git

 !   Feature branches that aren’t painful to merge
 !   Bug fix dumping ground branch that we can pull fixes
     from to build maintenance releases




1/25/12          ©2011 SugarCRM Inc. All rights reserved.   18
Git branching strategy




1/25/12      ©2011 SugarCRM Inc. All rights reserved.   19
Takeaways

 ! Git solved the scalability needs that Subversion didn’t
          !   Enables more distributed development with less integration
              time
          !   Allows us to define our branching strategy less around the
              tool and more around the process
 !   Moving to Git without migrating old commits was a
     #win
          !   Unshackled us from the SVN paradigm of the past
 ! GitHub is a kick butt tool
          !   Provides tools to make code reviews better and fit more into
              the natural flow of development
          !   Easily enables community around your codebase


1/25/12                   ©2011 SugarCRM Inc. All rights reserved.   20
Questions?



             ©2011 SugarCRM Inc. All rights reserved.

More Related Content

What's hot

CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS CloudCI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
Simon McCartney
 
DevOps Transformation in Technical
DevOps Transformation in TechnicalDevOps Transformation in Technical
DevOps Transformation in Technical
Opsta
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle
sam chiu
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
Mayank Kumar
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
KJR
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
Brian Moon
 
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
Simon McCartney
 
Crossing the DevOps Infosec Divide
Crossing the DevOps Infosec DivideCrossing the DevOps Infosec Divide
Crossing the DevOps Infosec Divide
XebiaLabs
 
OpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous IntegrationOpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous Integration
Digicomp Academy AG
 
Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetup
Guenjun Yoo
 
Going Cloud Native
Going Cloud NativeGoing Cloud Native
Going Cloud Native
David Schmitz
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt projectEyal Edri
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
Samuel Brown
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component Library
Clement Ho
 
Effective Spring on Kubernetes
Effective Spring on KubernetesEffective Spring on Kubernetes
Effective Spring on Kubernetes
Neven Cvetković
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Chris Aniszczyk
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
William Yeh
 
Self Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository ManagersSelf Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository Managers
Purav Gandhi
 
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
Agile Testing Alliance
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Robert McDermott
 

What's hot (20)

CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS CloudCI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
 
DevOps Transformation in Technical
DevOps Transformation in TechnicalDevOps Transformation in Technical
DevOps Transformation in Technical
 
不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle不只自動化而且更敏捷的Android開發工具 gradle
不只自動化而且更敏捷的Android開發工具 gradle
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
A CI/CD Pipeline to Deploy and Maintain OpenStack - cfgmgmtcamp2015
 
Crossing the DevOps Infosec Divide
Crossing the DevOps Infosec DivideCrossing the DevOps Infosec Divide
Crossing the DevOps Infosec Divide
 
OpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous IntegrationOpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous Integration
 
Moving to microservices from idea to production - GitLabJP meetup
Moving to microservices  from idea to production - GitLabJP meetupMoving to microservices  from idea to production - GitLabJP meetup
Moving to microservices from idea to production - GitLabJP meetup
 
Going Cloud Native
Going Cloud NativeGoing Cloud Native
Going Cloud Native
 
The challenge - testing the oVirt project
The challenge - testing the oVirt projectThe challenge - testing the oVirt project
The challenge - testing the oVirt project
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 
Building our Component Library
Building our Component LibraryBuilding our Component Library
Building our Component Library
 
Effective Spring on Kubernetes
Effective Spring on KubernetesEffective Spring on Kubernetes
Effective Spring on Kubernetes
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Self Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository ManagersSelf Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository Managers
 
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
Webinar on "DevOps LifeCycle and SCM using common Git commands for version co...
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 

Similar to The Virtual Git Summit - Subversion to Git - A Sugar Story

Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!
CollabNet
 
Syncing with-upstream
Syncing with-upstreamSyncing with-upstream
Syncing with-upstream
Darragh Bailey
 
Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
CollabNet
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
Matt Stine
 
SONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD PipelineSONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD Pipeline
DevOps Enterprise Summit
 
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
ZNetLive
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Edureka!
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
Vivek Parihar
 
Continuous Delivery & the Database - the Final Frontier
Continuous Delivery & the Database - the Final FrontierContinuous Delivery & the Database - the Final Frontier
Continuous Delivery & the Database - the Final Frontier
XebiaLabs
 
Continuous Delivery & the Database- The Final Frontier
Continuous Delivery & the Database- The Final FrontierContinuous Delivery & the Database- The Final Frontier
Continuous Delivery & the Database- The Final Frontier
DBmaestro - Database DevOps
 
Introducing Deployit 3.8
Introducing Deployit 3.8 Introducing Deployit 3.8
Introducing Deployit 3.8
XebiaLabs
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Weaveworks
 
Streamlining Deployments in a Large Websphere Environment
Streamlining Deployments in a Large Websphere Environment Streamlining Deployments in a Large Websphere Environment
Streamlining Deployments in a Large Websphere Environment
XebiaLabs
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CD
Jasmin Fluri
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
Apigee | Google Cloud
 
Svelte the future of frontend development
Svelte   the future of frontend developmentSvelte   the future of frontend development
Svelte the future of frontend development
twilson63
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProSkip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Codefresh
 
Git Init
Git InitGit Init
Git Init
Suvin Nimnaka
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
jeckels
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
VMware Tanzu
 

Similar to The Virtual Git Summit - Subversion to Git - A Sugar Story (20)

Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!
 
Syncing with-upstream
Syncing with-upstreamSyncing with-upstream
Syncing with-upstream
 
Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
SONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD PipelineSONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD Pipeline
 
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
 
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
Git Tutorial | Git Basics - Branching, Merging, Rebasing | Learn Git | DevOps...
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
 
Continuous Delivery & the Database - the Final Frontier
Continuous Delivery & the Database - the Final FrontierContinuous Delivery & the Database - the Final Frontier
Continuous Delivery & the Database - the Final Frontier
 
Continuous Delivery & the Database- The Final Frontier
Continuous Delivery & the Database- The Final FrontierContinuous Delivery & the Database- The Final Frontier
Continuous Delivery & the Database- The Final Frontier
 
Introducing Deployit 3.8
Introducing Deployit 3.8 Introducing Deployit 3.8
Introducing Deployit 3.8
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
 
Streamlining Deployments in a Large Websphere Environment
Streamlining Deployments in a Large Websphere Environment Streamlining Deployments in a Large Websphere Environment
Streamlining Deployments in a Large Websphere Environment
 
Relational Database CI/CD
Relational Database CI/CDRelational Database CI/CD
Relational Database CI/CD
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
 
Svelte the future of frontend development
Svelte   the future of frontend developmentSvelte   the future of frontend development
Svelte the future of frontend development
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a ProSkip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
 
Git Init
Git InitGit Init
Git Init
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 

More from John Mertic

PHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cubePHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cubeJohn Mertic
 
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
John Mertic
 
Astricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBXAstricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBXJohn Mertic
 
OSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM PlatformOSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM PlatformJohn Mertic
 
OSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to CustomizeOSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to CustomizeJohn Mertic
 
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
John Mertic
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
John Mertic
 
SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5John Mertic
 
Developing Easily Deployable PHP Applications ( OSCON 2010 )
Developing Easily Deployable PHP Applications ( OSCON 2010 )Developing Easily Deployable PHP Applications ( OSCON 2010 )
Developing Easily Deployable PHP Applications ( OSCON 2010 )
John Mertic
 
SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework
John Mertic
 
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in SugarSugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
 
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
John Mertic
 

More from John Mertic (12)

PHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cubePHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cube
 
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
 
Astricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBXAstricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBX
 
OSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM PlatformOSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM Platform
 
OSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to CustomizeOSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to Customize
 
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
 
SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5
 
Developing Easily Deployable PHP Applications ( OSCON 2010 )
Developing Easily Deployable PHP Applications ( OSCON 2010 )Developing Easily Deployable PHP Applications ( OSCON 2010 )
Developing Easily Deployable PHP Applications ( OSCON 2010 )
 
SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework
 
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in SugarSugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
 
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
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
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
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
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
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
 
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
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
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
 
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
 
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
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
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
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
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...
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
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
 
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
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
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
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
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™
 
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
 
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
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
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
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 

The Virtual Git Summit - Subversion to Git - A Sugar Story

  • 1. Subversion to Git: A Sugar Story John Mertic ©2012 SugarCRM Inc. All rights reserved.
  • 2. Who Am I? !   John Mertic !   Contact Info ! http:// jmertic.wordpress.com !   Twitter: @jmertic ! jmertic@sugarcrm.com ( SugarCRM ) ! jmertic@php.net ( PHP ) !   Community Manager for SugarCRM ! http://www.sugarcrm.com ! http://www.sugarforge.org !   Twitter: @sugarcrmdev 2/1/2012 @2012 SugarCRM Inc. All rights reserved. 2
  • 3. Why we started looking past Subversion !   Merging was painful !   Couldn’t easily work on multiple releases at once !   Couldn’t do feature branch integration easily !   Merging cost us several days of downtime plus integration testing !   No good way of doing pre-commit reviews !   Tried using Review Board for post-commit reviewing, but was ineffective !   Pre-commit reviews required manual posting of diff files and manual merging !   Overall, felt Subversion could scale to match our growing team. 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 3
  • 4. Why git? !   Wanted to move towards a DVCS tool to support our growing team !   Best quality of tools and IDE plugins across the various DVCS tools. !   Many team members already familiar with git, which helped train other team members ! GitHub 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 4
  • 5. 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 5
  • 6. Approaches to SVN to Git Migration !   Physically migrate existing SVN repository !   Helps maintain history !   Allows you to quit SVN cold turkey 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 6
  • 7. 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 7
  • 8. The approach we took !   Start fresh with git !   Allowed us to re-think our code structure !   Got rid of lots of old and unused code !   Avoided the problems of doing a migration 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 8
  • 9. Import SVN Have devs Export SVN export into change Setup SVN Create new newly from svn working mirroring git repo copy created git checkouts from GitHub repo to git clones 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 9
  • 10. Why GitHub? !   Wanted offsite secure code hosting provider !   Very easy to use web based management of repository !   ACL !   Simple file changes can be done online !   Visual history management !   SVN read ( and now write ) access for legacy clients !   Pull requests and forking made simple !   Enables pre-commit reviewing easily 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 10
  • 11. How did it go initially? !   #wins !   Average time to do a merge went down to about an hour !  Fewer conflicts !   Apply a fix to multiple branches now takes a minute !  No longer a manual process !   #fails !   Had to rethink our initial branching strategy !  More on this later !   Challenging for developers working on older and newer releases at the same time !  Resolved once older releases went away !   Learning curve for git tools !  Took around 6 months before team was really proficient 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 11
  • 12. What have we gained? 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 12
  • 13. Pull Requests! 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 13
  • 14. Advantages of Pull Requests !   More natural approach to pre-commit code reviewing !   Uses git forks to enable pushing commits up to main repository !   Enables true two-way peer review !   Inline commenting !   Can directly track submitter and reviewer !   Easy for submitter to update pull request 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 14
  • 15. New initiatives due to Pull Requests !   Open+ Developer Program !   Enables our VAR and ISV partners to have direct access to the Sugar codebase. !   They can contribute fixes directly to us that we can review and accept into the product !   Community Branch !   Allows our community members to make pull requests against our open source version, that we pull into the product !   Both initiatives has resulted in over 100 code contributions over the last year, over 5x as much as the previous year. 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 15
  • 16. Change in branching strategy 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 16
  • 17. What we did back in SVN 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 17
  • 18. Now what we can do with git !   Feature branches that aren’t painful to merge !   Bug fix dumping ground branch that we can pull fixes from to build maintenance releases 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 18
  • 19. Git branching strategy 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 19
  • 20. Takeaways ! Git solved the scalability needs that Subversion didn’t !   Enables more distributed development with less integration time !   Allows us to define our branching strategy less around the tool and more around the process !   Moving to Git without migrating old commits was a #win !   Unshackled us from the SVN paradigm of the past ! GitHub is a kick butt tool !   Provides tools to make code reviews better and fit more into the natural flow of development !   Easily enables community around your codebase 1/25/12 ©2011 SugarCRM Inc. All rights reserved. 20
  • 21. Questions? ©2011 SugarCRM Inc. All rights reserved.