SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Large Scale
                      Development with
                         Git and Gerrit




                        EclipseCon Europe 2012, Ludwigsburg
Matthias   Matthias
Männich     Sohn
Git
 … a distributed revision control system built by the
 Linux project to facilitate code review



JGit & EGit
… Git in Java and Eclipse



Gerrit
 … a JGit based code review system built by the
 Android project

                   Copyright © Matthias Männich, Matthias Sohn
How this journey started…
2006 first experiments:
•  Git wasn’t ready for prime time

2009 SAP joining the Git party
•  join JGit, EGit, Gerrit
•  piloting Git & Gerrit at Eclipse
•  start Lean Development Infrastructure
•  first internal pilots

large SAP projects moving to Git&Gerrit
•  Feb 2010 “Netweaver Cloud” on-demand platform
•  Jul 2011 large C++ Engine Project

Soon: generally available to all kinds of projects
                   Copyright © Matthias Männich, Matthias Sohn
Lean Development Infrastructure
Agile project organization
•  Teams of 10
•  Large projects: Product team + n dev teams

Learn from Open Source
•  Tools:
   Git, EGit, Gerrit, Skalli
   Maven, Nexus, Tycho, Sonar …
•  Communication: mailing lists, forums
•  Contributions between projects/products




                 Copyright © Matthias Männich, Matthias Sohn
Git / Gerrit for Lean DI

 All repositories hosted on central Gerrit server
 •  Used around the globe
 •  2k repositories, >2k users
 •  Scales pretty well if repository < 1G

 Central admins operate server and ensure standards

 Self Services for Projects (Skalli)
 •  create Git repository
 •  self-administer their repositories




                    Copyright © Matthias Männich, Matthias Sohn
Introducing Code Review

Learning from successful open source projects
•  transparency through code review and mailing lists

Code Review
... is new for most SAP developers
... is optional
... used by many projects today
... some teams do reviews across teams

Takes time to learn




                  Copyright © Matthias Männich, Matthias Sohn
Gerrit Code Review
                                                                             Gerrit
                          master

                                   change 12                                git    git
                                                                               git     git
                  change 10
                                            change 23




        Developer PC                                                   Developer PC



      git                                                          git
            git                                                          git

                              Copyright © Matthias Männich, Matthias Sohn
Code Review
                      push change




                      Gerrit notifies
                      reviewers
                                                                 other teams




          verify change            review code            team           Jenkins CI




                      comment &
improve               vote
change



abandon                                                   merge change
change                                                    into master


          Copyright © Matthias Männich, Matthias Sohn
Examples

Large C++ Engine Project
•  > 250 developers, many locations
•  large code base: > 1M lines of code
•  1 huge Git repository, many branches

“Netweaver Cloud” on-demand platform
•  ~150 developers, 3 locations
•  modular Java stack
•  >100 Git repositories




                 Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Motivation

in central VCS branching might get complicated

mostly single development branch models

continuous integration does not scale well
       tested                               tested                     error detected
                                                                       (introduced by?)
                1 hour



                                                                            30 commits/hour




not every commit gets full test coverage

high delay between erroneous submit and detection
                         Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Considerations

good training of the team is essential
- convincing       80%       rather easy
                   95%       takes some time
                 100%        …

infrastructure needs will increase

responsibilities might shift from quality team to
development

standard compliance (if applicable)



                  Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching

appealing to implement workflows inspired by
•  Linux Kernel Development
•  Gerrit Development
•  Git Flow
•  …



preconditions might not be feasible
•  strong hierarchies
•  modular code structure
•  “it’s done when it’s done” <> commercial interests


                  Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching

currently implemented and constantly evolving

- lots of topic branches (> 100 active)
       - topic owner concept (responsibility role)
       - small teams
       - different branch lifetimes
       - team defined quality barriers

- flat hierarchy

- high level branches maintained by quality team



                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching
                                                         Delivery



                           Main Topic 1                                       Main Topic 2




            Subtopic 1      Suptopic 2             ...           Subtopic 3    Suptopic 4    ...




consider
•  main topic branches should be distinct
   development areas (modularization?)
•  possible delays caused by topic integration
   (always acceptable?)
•  integration of main topics is done by quality team
                         Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Branching
                                                                   Authority
                                Delivery




                                                                 Quality Team
                               Integration


                                             Strong Quality Barriers



                  Subtopic 1   Suptopic 2      ...               Development




integration is done by developers
approval is given by quality team

quality barriers implemented with Gerrit Code Review

pretested code states => always stable integration branch
Migrate large projects – Quality barriers

Gerrit usage allows “pretested commits”

commits have to pass (before integration!)
•  Code review (human)
•  Builds and tests on several platforms

test coverage dependent on branch hierarchy level

ideal: every quality metric on every level




                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects - Recommendations

there is no golden rule (sorry)

get inspired by similar projects

discuss and implement a solution

heavily review your design and stay able to adjust

shift responsibilities to expertise location
•  code integration:          development
•  quality judgment:          quality team

implement extensive tool support

                   Copyright © Matthias Männich, Matthias Sohn
Migrate large projects – Some rough stats

250 developers

120 topic branches (lowest level)

50k Gerrit changes per year

100 “big” build and test servers




                  Copyright © Matthias Männich, Matthias Sohn
Netweaver Cloud Platform

~150 developers

Cloud infrastructure
Cloud services
OSGi (Equinox) based Java server
Tools

many mid-size repositories
modular Maven build
versioned API
p2 deployment

delivery every 2 weeks
                  Copyright © Matthias Männich, Matthias Sohn
Code Review & Scrum

     changes refined
     in review




                                      2 weekly Sprints




         Review

                                                             Planning
                  Release




                        Copyright © Matthias Männich, Matthias Sohn
Continuous Delivery


                                                    2 weekly sprint
                                                                                          Fix
                                                                                        Release

                                     Release
                                                                                   Fix bugs
                                                          Pull release
       staging
                         Deploy to
                          Staging                                                                   factory

                                                                                        Deploy to
                                                                                         Factory
                 Integration
                     Test                        2 weekly delivery




                   Deploy to
prod                                                                                      Q Gate
                 Internal Prod

                                     Copyright © Matthias Männich, Matthias Sohn
Integrating Core Cloud Infrastructure
                                                                 select comp.
                                                                  commit(s)
              Main
              Build
                                                                     trigger
                                                                    release

    Comp. A
                      linked as
                      submodules
                                                  update versions                   build
    Comp. B


                                                                                    stage
    Comp. C



                                                                               integration test
    Comp. D



    Comp. E                                          tag release                  release



                            Copyright © Matthias Männich, Matthias Sohn
Summary

Benefits
•  (many) developers like it
•  review and pre-tested commits improve quality
•  always able to ship

Future
•  scale
•  improve tools based on feedback

•  make use of submodule support in Gerrit
•  better support correction process
•  manage contributions between projects
   (inner source)

                 Copyright © Matthias Männich, Matthias Sohn
Q&A

Más contenido relacionado

La actualidad más candente

Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForgeCollabNet
 
Git Gerrit Mit Teamforge
Git Gerrit Mit TeamforgeGit Gerrit Mit Teamforge
Git Gerrit Mit TeamforgeCollabNet
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_finalMythri P K
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by stepBinh Quan Duc
 
Git strategies for DevOps
Git strategies for DevOpsGit strategies for DevOps
Git strategies for DevOpsAhmad Iqbal Ali
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflowRuben Tan
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxStefan Lay
 
You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.Eryk Szymanski
 
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...ManageIQ
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Stefan Lay
 
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!
 
How Git and Gerrit make you more productive
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productiveKarsten Dambekalns
 
How we git - commit policy and code review
How we git - commit policy and code reviewHow we git - commit policy and code review
How we git - commit policy and code reviewRuben Tan
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Stefan Lay
 
OSGi Versioning & Testing
OSGi Versioning & TestingOSGi Versioning & Testing
OSGi Versioning & TestingChris Aniszczyk
 
Trunk-Based Development
Trunk-Based DevelopmentTrunk-Based Development
Trunk-Based DevelopmentBryan Liu
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginLuca Milanesio
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseChris Aniszczyk
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Luca Milanesio
 

La actualidad más candente (20)

Git/Gerrit with TeamForge
Git/Gerrit with TeamForgeGit/Gerrit with TeamForge
Git/Gerrit with TeamForge
 
Git Gerrit Mit Teamforge
Git Gerrit Mit TeamforgeGit Gerrit Mit Teamforge
Git Gerrit Mit Teamforge
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final
 
Git workflow step by step
Git workflow step by stepGit workflow step by step
Git workflow step by step
 
Git strategies for DevOps
Git strategies for DevOpsGit strategies for DevOps
Git strategies for DevOps
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflow
 
It's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolboxIt's all about feedback - code review as a great tool in the agile toolbox
It's all about feedback - code review as a great tool in the agile toolbox
 
You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.You shall not pass - Control your code quality gates with a wizard.
You shall not pass - Control your code quality gates with a wizard.
 
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
Code Management and Promotion (DDT) - Jason Cornell - ManageIQ Design Summit ...
 
Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21Egit democamp-darmstadt-2011-06-21
Egit democamp-darmstadt-2011-06-21
 
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...
 
How Git and Gerrit make you more productive
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productive
 
How we git - commit policy and code review
How we git - commit policy and code reviewHow we git - commit policy and code review
How we git - commit policy and code review
 
Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29Egit democamp-karlsruhe-2011-11-29
Egit democamp-karlsruhe-2011-11-29
 
OSGi Versioning & Testing
OSGi Versioning & TestingOSGi Versioning & Testing
OSGi Versioning & Testing
 
Trunk-Based Development
Trunk-Based DevelopmentTrunk-Based Development
Trunk-Based Development
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub plugin
 
Perforce Innovations Showcase 
Perforce Innovations Showcase Perforce Innovations Showcase 
Perforce Innovations Showcase 
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in Eclipse
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
 

Similar a Large Scale Development with Git and Gerrit

Agile & ALM tools
Agile & ALM toolsAgile & ALM tools
Agile & ALM toolsLarry Cai
 
Cloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsCloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsKasper Nissen
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build AutomationHeiswayi Nrird
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueRapidValue
 
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHubIncrease the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHubDevOps.com
 
Git usage (Basics and workflow)
Git usage (Basics and workflow)Git usage (Basics and workflow)
Git usage (Basics and workflow)Yeasin Abedin
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing selfChen-Tien Tsai
 
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft AjaxThe Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft AjaxDarren Sim
 
Multi-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with GitMulti-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with Gitdopejam
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHubNYC DevShop
 
Blue Monitor Software Development
Blue Monitor Software DevelopmentBlue Monitor Software Development
Blue Monitor Software Developmenturbantech
 
Blue Monitor Systems Software Development Services
Blue Monitor Systems Software Development ServicesBlue Monitor Systems Software Development Services
Blue Monitor Systems Software Development Servicesbluemonitor
 
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"Aberla
 
Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarCollabNet
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weaveworks
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsWeaveworks
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsSonja Schweigert
 
Accelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpAccelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpjwi11iams
 

Similar a Large Scale Development with Git and Gerrit (20)

Agile & ALM tools
Agile & ALM toolsAgile & ALM tools
Agile & ALM tools
 
Cloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOpsCloud Native CI/CD with GitOps
Cloud Native CI/CD with GitOps
 
DevOps and Build Automation
DevOps and Build AutomationDevOps and Build Automation
DevOps and Build Automation
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValueDevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
 
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHubIncrease the Velocity of Your Software Releases Using GitHub and DeployHub
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
 
Git usage (Basics and workflow)
Git usage (Basics and workflow)Git usage (Basics and workflow)
Git usage (Basics and workflow)
 
Git essential training & sharing self
Git essential training & sharing selfGit essential training & sharing self
Git essential training & sharing self
 
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft AjaxThe Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
The Web Development Eco-system with VSTS, ASP.NET 2.0 & Microsoft Ajax
 
Multi-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with GitMulti-QA Environment, parallel development with Git
Multi-QA Environment, parallel development with Git
 
How We Use GitHub
How We Use GitHubHow We Use GitHub
How We Use GitHub
 
Blue Monitor Software Development
Blue Monitor Software DevelopmentBlue Monitor Software Development
Blue Monitor Software Development
 
Blue Monitor Systems Software Development Services
Blue Monitor Systems Software Development ServicesBlue Monitor Systems Software Development Services
Blue Monitor Systems Software Development Services
 
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
ESEconf2011 - Guckenheimer Sam: "Agile in the Very Large"
 
Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Migrate to microservices
Migrate to microservicesMigrate to microservices
Migrate to microservices
 
Accelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpAccelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUp
 

Más de msohn

Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23msohn
 
News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26msohn
 
Git journey from mars to neon EclipseCon North America - 2016-03-08
Git journey from mars to neon   EclipseCon North America - 2016-03-08Git journey from mars to neon   EclipseCon North America - 2016-03-08
Git journey from mars to neon EclipseCon North America - 2016-03-08msohn
 
Versioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and GerritVersioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and Gerritmsohn
 
News from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 EuropeNews from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 Europemsohn
 
Git missiontomars 2015-03-10
Git missiontomars 2015-03-10Git missiontomars 2015-03-10
Git missiontomars 2015-03-10msohn
 
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - LudwigsburgNews from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburgmsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerritmsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreenGit Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreenmsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a changemsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a changemsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review changemsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerritmsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest stateGit Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest statemsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerritmsohn
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...msohn
 
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blameGit Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blamemsohn
 
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebaseGit Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebasemsohn
 
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history viewGit Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history viewmsohn
 
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...msohn
 

Más de msohn (20)

Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23Project Gardener - EclipseCon Europe - 2018-10-23
Project Gardener - EclipseCon Europe - 2018-10-23
 
News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26News from Git in Eclipse - EclipseCon EU - 2016-10-26
News from Git in Eclipse - EclipseCon EU - 2016-10-26
 
Git journey from mars to neon EclipseCon North America - 2016-03-08
Git journey from mars to neon   EclipseCon North America - 2016-03-08Git journey from mars to neon   EclipseCon North America - 2016-03-08
Git journey from mars to neon EclipseCon North America - 2016-03-08
 
Versioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and GerritVersioning large binary files with JGit, EGit and Gerrit
Versioning large binary files with JGit, EGit and Gerrit
 
News from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 EuropeNews from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 Europe
 
Git missiontomars 2015-03-10
Git missiontomars 2015-03-10Git missiontomars 2015-03-10
Git missiontomars 2015-03-10
 
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - LudwigsburgNews from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
News from EGit - Talk EclipseCon Europe 2014 - Ludwigsburg
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 9 - starting demo gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreenGit Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 7 - new changescreen
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 6 - submit a change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 5 - improve a change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review changeGit Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 4 - review change
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 3 - push change to gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest stateGit Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 2 - fetch the latest state
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerritGit Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 1 - configure for gerrit
 
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
Git Tutorial EclipseCon France 2014 - Gerrit Exercise 8 - view gerrit review ...
 
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blameGit Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
Git Tutorial EclipseCon France 2014 - Git Exercise 07 - git blame
 
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebaseGit Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
Git Tutorial EclipseCon France 2014 - Git Exercise 06 - interactive rebase
 
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history viewGit Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
Git Tutorial EclipseCon France 2014 - Git Exercise 05 - history view
 
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
Git Tutorial EclipseCon France 2014 - Git Exercise 04 - merging rebasing and ...
 

Último

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
"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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Último (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
"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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Large Scale Development with Git and Gerrit

  • 1. Large Scale Development with Git and Gerrit EclipseCon Europe 2012, Ludwigsburg Matthias Matthias Männich Sohn
  • 2. Git … a distributed revision control system built by the Linux project to facilitate code review JGit & EGit … Git in Java and Eclipse Gerrit … a JGit based code review system built by the Android project Copyright © Matthias Männich, Matthias Sohn
  • 3. How this journey started… 2006 first experiments: •  Git wasn’t ready for prime time 2009 SAP joining the Git party •  join JGit, EGit, Gerrit •  piloting Git & Gerrit at Eclipse •  start Lean Development Infrastructure •  first internal pilots large SAP projects moving to Git&Gerrit •  Feb 2010 “Netweaver Cloud” on-demand platform •  Jul 2011 large C++ Engine Project Soon: generally available to all kinds of projects Copyright © Matthias Männich, Matthias Sohn
  • 4. Lean Development Infrastructure Agile project organization •  Teams of 10 •  Large projects: Product team + n dev teams Learn from Open Source •  Tools: Git, EGit, Gerrit, Skalli Maven, Nexus, Tycho, Sonar … •  Communication: mailing lists, forums •  Contributions between projects/products Copyright © Matthias Männich, Matthias Sohn
  • 5. Git / Gerrit for Lean DI All repositories hosted on central Gerrit server •  Used around the globe •  2k repositories, >2k users •  Scales pretty well if repository < 1G Central admins operate server and ensure standards Self Services for Projects (Skalli) •  create Git repository •  self-administer their repositories Copyright © Matthias Männich, Matthias Sohn
  • 6. Introducing Code Review Learning from successful open source projects •  transparency through code review and mailing lists Code Review ... is new for most SAP developers ... is optional ... used by many projects today ... some teams do reviews across teams Takes time to learn Copyright © Matthias Männich, Matthias Sohn
  • 7. Gerrit Code Review Gerrit master change 12 git git git git change 10 change 23 Developer PC Developer PC git git git git Copyright © Matthias Männich, Matthias Sohn
  • 8. Code Review push change Gerrit notifies reviewers other teams verify change review code team Jenkins CI comment & improve vote change abandon merge change change into master Copyright © Matthias Männich, Matthias Sohn
  • 9. Examples Large C++ Engine Project •  > 250 developers, many locations •  large code base: > 1M lines of code •  1 huge Git repository, many branches “Netweaver Cloud” on-demand platform •  ~150 developers, 3 locations •  modular Java stack •  >100 Git repositories Copyright © Matthias Männich, Matthias Sohn
  • 10. Migrate large projects - Motivation in central VCS branching might get complicated mostly single development branch models continuous integration does not scale well tested tested error detected (introduced by?) 1 hour 30 commits/hour not every commit gets full test coverage high delay between erroneous submit and detection Copyright © Matthias Männich, Matthias Sohn
  • 11. Migrate large projects - Considerations good training of the team is essential - convincing 80% rather easy 95% takes some time 100% … infrastructure needs will increase responsibilities might shift from quality team to development standard compliance (if applicable) Copyright © Matthias Männich, Matthias Sohn
  • 12. Migrate large projects - Branching appealing to implement workflows inspired by •  Linux Kernel Development •  Gerrit Development •  Git Flow •  … preconditions might not be feasible •  strong hierarchies •  modular code structure •  “it’s done when it’s done” <> commercial interests Copyright © Matthias Männich, Matthias Sohn
  • 13. Migrate large projects - Branching currently implemented and constantly evolving - lots of topic branches (> 100 active) - topic owner concept (responsibility role) - small teams - different branch lifetimes - team defined quality barriers - flat hierarchy - high level branches maintained by quality team Copyright © Matthias Männich, Matthias Sohn
  • 14. Migrate large projects - Branching Delivery Main Topic 1 Main Topic 2 Subtopic 1 Suptopic 2 ... Subtopic 3 Suptopic 4 ... consider •  main topic branches should be distinct development areas (modularization?) •  possible delays caused by topic integration (always acceptable?) •  integration of main topics is done by quality team Copyright © Matthias Männich, Matthias Sohn
  • 15. Migrate large projects - Branching Authority Delivery Quality Team Integration Strong Quality Barriers Subtopic 1 Suptopic 2 ... Development integration is done by developers approval is given by quality team quality barriers implemented with Gerrit Code Review pretested code states => always stable integration branch
  • 16. Migrate large projects – Quality barriers Gerrit usage allows “pretested commits” commits have to pass (before integration!) •  Code review (human) •  Builds and tests on several platforms test coverage dependent on branch hierarchy level ideal: every quality metric on every level Copyright © Matthias Männich, Matthias Sohn
  • 17. Migrate large projects - Recommendations there is no golden rule (sorry) get inspired by similar projects discuss and implement a solution heavily review your design and stay able to adjust shift responsibilities to expertise location •  code integration: development •  quality judgment: quality team implement extensive tool support Copyright © Matthias Männich, Matthias Sohn
  • 18. Migrate large projects – Some rough stats 250 developers 120 topic branches (lowest level) 50k Gerrit changes per year 100 “big” build and test servers Copyright © Matthias Männich, Matthias Sohn
  • 19. Netweaver Cloud Platform ~150 developers Cloud infrastructure Cloud services OSGi (Equinox) based Java server Tools many mid-size repositories modular Maven build versioned API p2 deployment delivery every 2 weeks Copyright © Matthias Männich, Matthias Sohn
  • 20. Code Review & Scrum changes refined in review 2 weekly Sprints Review Planning Release Copyright © Matthias Männich, Matthias Sohn
  • 21. Continuous Delivery 2 weekly sprint Fix Release Release Fix bugs Pull release staging Deploy to Staging factory Deploy to Factory Integration Test 2 weekly delivery Deploy to prod Q Gate Internal Prod Copyright © Matthias Männich, Matthias Sohn
  • 22. Integrating Core Cloud Infrastructure select comp. commit(s) Main Build trigger release Comp. A linked as submodules update versions build Comp. B stage Comp. C integration test Comp. D Comp. E tag release release Copyright © Matthias Männich, Matthias Sohn
  • 23. Summary Benefits •  (many) developers like it •  review and pre-tested commits improve quality •  always able to ship Future •  scale •  improve tools based on feedback •  make use of submodule support in Gerrit •  better support correction process •  manage contributions between projects (inner source) Copyright © Matthias Männich, Matthias Sohn
  • 24. Q&A