SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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 ...
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

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