Bringing Pull Request to Gerrit

Eryk Szymanski
Eryk SzymanskiEngineering Manager at CollabNet
Copyright ©2015 CollabNet, Inc. All Rights Reserved.
Bringing Pull Request to Gerrit
A tale of feature development
Eryk Szymanski
Potsdam Engineering Office
CollabNet
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
CollabNet Facts
10,000+ customers,
proven in global
deployments as large
as 80,000 users and 1
billion commits
Leader in open-source
based application
lifecycle management,
version control, DevOps,
and collaboration
solutions
250 employees across
the globe
Founded in 1999; HQ
in South San
Francisco, CA
2
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
CollabNet Customers
Financials
Technology
Government
Other
Service Providers
3
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
CollabNet TeamForge - ALM Solution
4
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
TeamForge - Git/Gerrit Integration
5
Our approach:
• Support Open Source
– Give back to the community
• If it is Gerrit core change, open source it
– Do not fork
• Stay as close to current Gerrit as possible
– It is ok to have patches on top of vanilla Gerrit
– But those are regularly rebased as Gerrit progresses
• Everything else goes into the plugins
Based on Gerrit 2.13.2 + some patches
and 6 proprietary plugins
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Git/Gerrit Integration - Features
6
History ProtectionUsers & RBAC
Quality GatesReplication
Git LFS Support
Pull Request
Notifications
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Workflow
7
yes
no
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request from Gerrit User Perspective
8
What is a Pull Request?
– It is a merge commit pushed for review.
Does it mean it is possible to have a pull request in Gerrit?
– Yes, one can have a merge commit pushed for review.
But can I see a full diff to review the changes?
– Yes, it is possible since this patch got merged:
http://gerrit-review.googlesource.com/#/c/72092/
So what’s the big deal?
– No User Interface. Pull Request model is quite different
than Gerrit model and Gerrit UI does not support it.
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
From Pull Request User Perspective
9
Will my branch appear in UI once I push it to remote?
– Yes, you can see it in Gerrit.
So where is my create pull request button?
– There isn’t any.
Oh, I thought you said there is a Pull Request feature in Gerrit.
Although technically speaking it is possible to use the Pull
Requests, from a user perspective there is still no such a feature
in Gerrit
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Motivation behind Pull Request
10
• Pull Requests are popular
– Our customers ask for it
• General familiarity with the Pull Request model
– Easier onboarding for new TeamForge users
• Support feature branch development model
– Final big-bang review before merge
– One can even combine that with Gerrit model having both
Our goal was to deliver an intuitive Pull Request UI
to enable easy onboarding for people who are already familiar
with Pull Request and do not know Gerrit
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Implementation - User Interface Findings
•Gerrit UI is very powerful but hard to use for a novice
•Adding a new feature might not make it easier
•It is hard to maintain UI changes that are not upstream
•Working on UI with the community may slow us down
and does not give us full control over the UI
•The user experience degrades every time one have to switch
between different applications
•Not sure what to choose: GWT or PolyGerrit (at that
point of time)
11
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Implementation - User Interface Solution
• Seamless UI and Consistent flow for TeamForge Users
• One can use Pull Request or other Gerrit features without even seeing
Gerrit
• Everything happens in one place - TeamForge Code Browser
12
Implement the UI in TeamForge Code Browser
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Implementation - REST API
• Gerrit Rest API:
– While it is doing great job for Gerrit, it is not always optimal in
delivering required data for our UI (i.e. Pull Request)
– Not versioned (and sometimes changes)
– No support for O-Auth authentication
• Solution:
– Come up with our own REST API
– It comes as a plugin and is specific for our needs
– Versioned and uses O-Auth for authentication
13
Copyright ©2015 CollabNet, Inc. All Rights Reserved.Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Demo
Pull Request in Action
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Code Browser - Branches
15
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Create Pull Request
16
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Created
17
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request In Review
18
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Reviewed
19
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Updated - Owner View
20
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Updated - Reviewer View
21
Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Pull Request Ready To Be Merged
22
Copyright ©2015 CollabNet, Inc. All Rights Reserved.Copyright ©2016 CollabNet, Inc. All Rights Reserved.
Thank you very much
Any Questions?
1 of 23

Recommended

Zero-Downtime Gerrit Code Review Upgrade by
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeLuca Milanesio
3.4K views23 slides
GerritHub.io - present, past, future by
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, futureLuca Milanesio
8.2K views37 slides
Gerrit Code Review Analytics by
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review AnalyticsLuca Milanesio
3.9K views23 slides
Diffy gets enterprise grade by
Diffy gets enterprise gradeDiffy gets enterprise grade
Diffy gets enterprise gradeEryk Szymanski
689 views23 slides
GitLab webcast - Release 8.4 by
GitLab webcast - Release 8.4GitLab webcast - Release 8.4
GitLab webcast - Release 8.4GitLab, Inc
379 views17 slides
GitLab 8.6 - Release Webcast by
GitLab 8.6 - Release Webcast GitLab 8.6 - Release Webcast
GitLab 8.6 - Release Webcast GitLab, Inc
2.6K views22 slides

More Related Content

What's hot

You shall not pass - Control your code quality gates with a wizard. by
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
1.3K views20 slides
Introducing GitLab (June 2018) by
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
5.9K views32 slides
GitLab 8.5 Highlights and Step-by-step tutorial by
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialHeather McNamee
646 views28 slides
Flex and .NET Integration by
Flex and .NET IntegrationFlex and .NET Integration
Flex and .NET Integrationicaraion
789 views27 slides
Up GitLab Presentation 2015 by
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015Kumaran Balachandran
2.6K views18 slides
Introducing GitLab (September 2018) by
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Noa Harel
1.3K views44 slides

What's hot(20)

You shall not pass - Control your code quality gates with a wizard. by Eryk Szymanski
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 Szymanski1.3K views
Introducing GitLab (June 2018) by Noa Harel
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
Noa Harel5.9K views
GitLab 8.5 Highlights and Step-by-step tutorial by Heather McNamee
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
Heather McNamee646 views
Flex and .NET Integration by icaraion
Flex and .NET IntegrationFlex and .NET Integration
Flex and .NET Integration
icaraion789 views
Introducing GitLab (September 2018) by Noa Harel
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
Noa Harel1.3K views
Git Lab Introduction by Krunal Doshi
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
Krunal Doshi847 views
Gerrit Code Review with GitHub plugin by Luca Milanesio
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub plugin
Luca Milanesio15K views
Stable master workflow with Gerrit Code Review by Luca Milanesio
Stable master workflow with Gerrit Code ReviewStable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code Review
Luca Milanesio1.9K views
What's New for GitLab CI/CD February 2020 by Noa Harel
What's New for GitLab CI/CD February 2020What's New for GitLab CI/CD February 2020
What's New for GitLab CI/CD February 2020
Noa Harel637 views
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics by Luca Milanesio
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Luca Milanesio1.3K views
What's New in GitLab and Software Development Trends by Noa Harel
What's New in GitLab and Software Development TrendsWhat's New in GitLab and Software Development Trends
What's New in GitLab and Software Development Trends
Noa Harel901 views
Introducing GitLab (September 2018) by Noa Harel
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
Noa Harel223 views
How Git and Gerrit make you more productive by Karsten Dambekalns
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productive
Karsten Dambekalns10.5K views
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyer by Noa Harel
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyerCase Study: Migration to GitLab (from Bitbucket) at AppsFlyer
Case Study: Migration to GitLab (from Bitbucket) at AppsFlyer
Noa Harel733 views
Gerrit Code Review: how to script a plugin with Scala and Groovy by Luca Milanesio
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and Groovy
Luca Milanesio3.5K views
Slide: Introducing GitLab by ALMtoolbox by Noa Harel
Slide: Introducing GitLab by ALMtoolboxSlide: Introducing GitLab by ALMtoolbox
Slide: Introducing GitLab by ALMtoolbox
Noa Harel964 views

Viewers also liked

Infinite gerrit by
Infinite gerritInfinite gerrit
Infinite gerritHaithem Jarraya
756 views14 slides
News from Git in Eclipse - EclipseCon 2015 Europe by
News from Git in Eclipse - EclipseCon 2015 EuropeNews from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 Europemsohn
1.9K views31 slides
Versioning large binary files with JGit, EGit and Gerrit by
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
2.2K views13 slides
Gerrit linuxtag2011 by
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011thkoch
4K views42 slides
Audio devices by
Audio devicesAudio devices
Audio devicesErika Albán Cedeño
266 views6 slides
0601069 study of assessment methods of working capital requirement by
0601069 study of assessment methods of working capital requirement0601069 study of assessment methods of working capital requirement
0601069 study of assessment methods of working capital requirementSupa Buoy
721 views91 slides

Viewers also liked(17)

News from Git in Eclipse - EclipseCon 2015 Europe by msohn
News from Git in Eclipse - EclipseCon 2015 EuropeNews from Git in Eclipse - EclipseCon 2015 Europe
News from Git in Eclipse - EclipseCon 2015 Europe
msohn1.9K views
Versioning large binary files with JGit, EGit and Gerrit by msohn
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
msohn2.2K views
Gerrit linuxtag2011 by thkoch
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011
thkoch4K views
0601069 study of assessment methods of working capital requirement by Supa Buoy
0601069 study of assessment methods of working capital requirement0601069 study of assessment methods of working capital requirement
0601069 study of assessment methods of working capital requirement
Supa Buoy721 views
0601036 causes of attrition amongst the local and outside workers by Supa Buoy
0601036 causes of attrition amongst the local and outside workers0601036 causes of attrition amongst the local and outside workers
0601036 causes of attrition amongst the local and outside workers
Supa Buoy244 views
Dvaree by Sale01
DvareeDvaree
Dvaree
Sale01249 views
Ma ch 14 banking and the money supply (1) by Uconn Stamford
Ma ch 14 banking and the money supply (1)Ma ch 14 banking and the money supply (1)
Ma ch 14 banking and the money supply (1)
Uconn Stamford1.5K views
It challenges in a global organization by Yuval Schwabe
It challenges in a global organizationIt challenges in a global organization
It challenges in a global organization
Yuval Schwabe240 views
0601085 perceptible analysis of depository services by Supa Buoy
0601085 perceptible analysis of depository services0601085 perceptible analysis of depository services
0601085 perceptible analysis of depository services
Supa Buoy392 views
0601018 survey of small & medium ad agencies by Supa Buoy
0601018 survey of small & medium ad agencies0601018 survey of small & medium ad agencies
0601018 survey of small & medium ad agencies
Supa Buoy235 views
The mindmapbook by sooner123
The mindmapbookThe mindmapbook
The mindmapbook
sooner123360 views

Similar to Bringing Pull Request to Gerrit

Optimize Your Enterprise Git Webinar by
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarCollabNet
753 views39 slides
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You by
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWebinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWeaveworks
8 views37 slides
Using containerization to enable your microservice architecture by
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Apigee | Google Cloud
867 views37 slides
Introducing CollabNet TeamForge® 8.0 by
Introducing CollabNet TeamForge® 8.0Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0CollabNet
1.4K views29 slides
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product... by
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...AppDynamics
1.1K views42 slides
Jose Quaresma "DevOps in the Enterprise: what I have learned so far" by
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"Fwdays
192 views21 slides

Similar to Bringing Pull Request to Gerrit(20)

Optimize Your Enterprise Git Webinar by CollabNet
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
CollabNet753 views
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You by Weaveworks
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWebinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
Weaveworks8 views
Using containerization to enable your microservice architecture by Apigee | Google Cloud
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
Introducing CollabNet TeamForge® 8.0 by CollabNet
Introducing CollabNet TeamForge® 8.0Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0
CollabNet1.4K views
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product... by AppDynamics
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
AppDynamics1.1K views
Jose Quaresma "DevOps in the Enterprise: what I have learned so far" by Fwdays
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
Fwdays192 views
Beyond Gerrit @ Gerrit User Summit 2017, London by Jacek Centkowski
Beyond Gerrit @ Gerrit User Summit 2017, LondonBeyond Gerrit @ Gerrit User Summit 2017, London
Beyond Gerrit @ Gerrit User Summit 2017, London
Jacek Centkowski789 views
Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ... by CezzaineZaher1
Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ...Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ...
Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ...
CezzaineZaher148 views
2016 Federal User Group Conference - TeamForge Capabilities and Directions by CollabNet
2016 Federal User Group Conference - TeamForge Capabilities and Directions2016 Federal User Group Conference - TeamForge Capabilities and Directions
2016 Federal User Group Conference - TeamForge Capabilities and Directions
CollabNet468 views
A Reference Architecture to Enable Visibility and Traceability across the Ent... by CollabNet
A Reference Architecture to Enable Visibility and Traceability across the Ent...A Reference Architecture to Enable Visibility and Traceability across the Ent...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
CollabNet10.4K views
Bringing Partners, Teams & Systems Together through APIs by Apigee | Google Cloud
Bringing Partners, Teams & Systems Together through APIsBringing Partners, Teams & Systems Together through APIs
Bringing Partners, Teams & Systems Together through APIs
Don't Let Git Get Your Goat! by CollabNet
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!
CollabNet1.3K views
Vizag Virtual Meetup #7: Trending API Topics for 2022 by Ravi Tamada
Vizag Virtual Meetup #7: Trending API Topics for 2022Vizag Virtual Meetup #7: Trending API Topics for 2022
Vizag Virtual Meetup #7: Trending API Topics for 2022
Ravi Tamada419 views
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat... by Jitendra Bafna
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
Jitendra Bafna559 views
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ... by Jason Bloomberg
WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...WEBINAR: API Clouds for Faster APIs:  Leveraging Existing Assets for the API ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
Jason Bloomberg709 views
Going Agile in a Multi-National Work Environment and the Tool We Chose by Paula Stern
Going Agile in a Multi-National Work Environment and the Tool We ChoseGoing Agile in a Multi-National Work Environment and the Tool We Chose
Going Agile in a Multi-National Work Environment and the Tool We Chose
Paula Stern111 views
Api led connectivity_brazil by Anupam Gogoi
Api led connectivity_brazilApi led connectivity_brazil
Api led connectivity_brazil
Anupam Gogoi742 views
[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo... by WSO2
[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo...[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo...
[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo...
WSO2667 views
MuleSoft Madrid Meetup #3 slides 2nd July 2020 by Ieva Navickaite
MuleSoft Madrid Meetup #3 slides 2nd July 2020MuleSoft Madrid Meetup #3 slides 2nd July 2020
MuleSoft Madrid Meetup #3 slides 2nd July 2020
Ieva Navickaite460 views

Recently uploaded

Ransomware is Knocking your Door_Final.pdf by
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
81 views46 slides
The Power of Heat Decarbonisation Plans in the Built Environment by
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built EnvironmentIES VE
67 views20 slides
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsPriyanka Aash
103 views59 slides
"Surviving highload with Node.js", Andrii Shumada by
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada Fwdays
49 views29 slides
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueShapeBlue
191 views23 slides
Future of AR - Facebook Presentation by
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook PresentationRob McCarty
54 views27 slides

Recently uploaded(20)

The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE67 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash103 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays49 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue191 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty54 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O... by ShapeBlue
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
ShapeBlue59 views
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online by ShapeBlue
KVM Security Groups Under the Hood - Wido den Hollander - Your.OnlineKVM Security Groups Under the Hood - Wido den Hollander - Your.Online
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue154 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue69 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue97 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue68 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue110 views
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue by ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlueCloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
CloudStack Object Storage - An Introduction - Vladimir Petrov - ShapeBlue
ShapeBlue63 views

Bringing Pull Request to Gerrit

  • 1. Copyright ©2015 CollabNet, Inc. All Rights Reserved. Bringing Pull Request to Gerrit A tale of feature development Eryk Szymanski Potsdam Engineering Office CollabNet
  • 2. Copyright ©2016 CollabNet, Inc. All Rights Reserved. CollabNet Facts 10,000+ customers, proven in global deployments as large as 80,000 users and 1 billion commits Leader in open-source based application lifecycle management, version control, DevOps, and collaboration solutions 250 employees across the globe Founded in 1999; HQ in South San Francisco, CA 2
  • 3. Copyright ©2016 CollabNet, Inc. All Rights Reserved. CollabNet Customers Financials Technology Government Other Service Providers 3
  • 4. Copyright ©2016 CollabNet, Inc. All Rights Reserved. CollabNet TeamForge - ALM Solution 4
  • 5. Copyright ©2016 CollabNet, Inc. All Rights Reserved. TeamForge - Git/Gerrit Integration 5 Our approach: • Support Open Source – Give back to the community • If it is Gerrit core change, open source it – Do not fork • Stay as close to current Gerrit as possible – It is ok to have patches on top of vanilla Gerrit – But those are regularly rebased as Gerrit progresses • Everything else goes into the plugins Based on Gerrit 2.13.2 + some patches and 6 proprietary plugins
  • 6. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Git/Gerrit Integration - Features 6 History ProtectionUsers & RBAC Quality GatesReplication Git LFS Support Pull Request Notifications
  • 7. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Workflow 7 yes no
  • 8. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request from Gerrit User Perspective 8 What is a Pull Request? – It is a merge commit pushed for review. Does it mean it is possible to have a pull request in Gerrit? – Yes, one can have a merge commit pushed for review. But can I see a full diff to review the changes? – Yes, it is possible since this patch got merged: http://gerrit-review.googlesource.com/#/c/72092/ So what’s the big deal? – No User Interface. Pull Request model is quite different than Gerrit model and Gerrit UI does not support it.
  • 9. Copyright ©2016 CollabNet, Inc. All Rights Reserved. From Pull Request User Perspective 9 Will my branch appear in UI once I push it to remote? – Yes, you can see it in Gerrit. So where is my create pull request button? – There isn’t any. Oh, I thought you said there is a Pull Request feature in Gerrit. Although technically speaking it is possible to use the Pull Requests, from a user perspective there is still no such a feature in Gerrit
  • 10. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Motivation behind Pull Request 10 • Pull Requests are popular – Our customers ask for it • General familiarity with the Pull Request model – Easier onboarding for new TeamForge users • Support feature branch development model – Final big-bang review before merge – One can even combine that with Gerrit model having both Our goal was to deliver an intuitive Pull Request UI to enable easy onboarding for people who are already familiar with Pull Request and do not know Gerrit
  • 11. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Implementation - User Interface Findings •Gerrit UI is very powerful but hard to use for a novice •Adding a new feature might not make it easier •It is hard to maintain UI changes that are not upstream •Working on UI with the community may slow us down and does not give us full control over the UI •The user experience degrades every time one have to switch between different applications •Not sure what to choose: GWT or PolyGerrit (at that point of time) 11
  • 12. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Implementation - User Interface Solution • Seamless UI and Consistent flow for TeamForge Users • One can use Pull Request or other Gerrit features without even seeing Gerrit • Everything happens in one place - TeamForge Code Browser 12 Implement the UI in TeamForge Code Browser
  • 13. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Implementation - REST API • Gerrit Rest API: – While it is doing great job for Gerrit, it is not always optimal in delivering required data for our UI (i.e. Pull Request) – Not versioned (and sometimes changes) – No support for O-Auth authentication • Solution: – Come up with our own REST API – It comes as a plugin and is specific for our needs – Versioned and uses O-Auth for authentication 13
  • 14. Copyright ©2015 CollabNet, Inc. All Rights Reserved.Copyright ©2016 CollabNet, Inc. All Rights Reserved. Demo Pull Request in Action
  • 15. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Code Browser - Branches 15
  • 16. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Create Pull Request 16
  • 17. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Created 17
  • 18. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request In Review 18
  • 19. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Reviewed 19
  • 20. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Updated - Owner View 20
  • 21. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Updated - Reviewer View 21
  • 22. Copyright ©2016 CollabNet, Inc. All Rights Reserved. Pull Request Ready To Be Merged 22
  • 23. Copyright ©2015 CollabNet, Inc. All Rights Reserved.Copyright ©2016 CollabNet, Inc. All Rights Reserved. Thank you very much Any Questions?

Editor's Notes

  1. Founded in 1999, CollabNet is truly one of the founding fathers of the open-source movement Today thousands of customers rely upon on our solutions to develop high quality software at speed We maintain a global presence with offices in SF, Houston, London, Berlin, Chennai, Tokyo
  2. We have customers who are leaders across the industries and verticals they represent. From Financials, Technology, Government, Service Providers and Other key industries like manufacturing, healthcare and department stores.
  3. The patches I mention here are those that did not get its way into vanilla Gerrit. We want to give back to the community and are not interested in maintaining our own Gerrit version. Our extra patches are rebased over each version of Gerrit. So I think it is fair to say that we don’t have a fork. So what features do we deliver?
  4. Here you can see the main features that we provide on top of Gerrit. We have TeamForge sync plugin with let us to maintain users and their access rights to Gerrit via TF Role Based Access Conrol model. We have notification plugin that delivers email notifications to users that use Gerrit as Git server. And we have our history protection plugin that assures that no branch will be deleted or rewritten by accident. Those have been presented on Gerrit User Summit in 2014. Last year I’ve presented Quality Gates wizard, a way to define your own submit rules without prolog. We also have Replication feature, which is based on Gerrit replication plugin, but allows managing and controlling of the replication from TeamForge. And this year features are Git LFS (which is based on the plugin available in Gerrit core) and the PullRequest. So let’s talk about pull request.
  5. What is a pull request? Let’s start with a workflow. For a developer working on pull request it starts in similar way as in Gerrit. One create a feature branch and create some commits. But instead of pushing it for review, the branch is pushed to the remote. We call it a feature branch. Once we have a feature branch on the server one can create a pull request. A request to pull the changes from the feature branch and merge it onto destination branch, which needs to be specified as well. Creating a pull request is equivalent to publishing changes for review. Then the changes are being reviewed, can be reworked, and after they are approved the pull request get merged into the destination branch. Then the feature branch usually gets deleted. So comes the question: how this can be mapped onto Gerrit?
  6. The answer is quite obvious, if you think about it: Pull Request is a merge commit pushed for review. So everyone can do that in Gerrit. Prior to the version 2.13 the drawback was, that there was no way to review the changes of merge commit as those were not visible in Gerrit (unless there was a conflict that got automatically resolved). Fortunately David Grzegorczyk, a developer from Poland proposed a change, that enables a diff of merge commit against any parent. So, my colleagues were working on this change and with help of community, the change got merged. So now everyone can use pull request in Gerrit. Right? Well, not really. I would say that the pull request feature is available in Gerrit to people, who do not actually need/want it. Let me show you why.
  7. Let’s have a look at the feature from a perspective of a Pull Request user that starts his adventure with Gerrit. He will be able to create his branch with changes and push it to remote but that’s about it. Why? There is no user interface that follows the model that the Pull Request user is familiar with. So he cannot leverage what he has learned while using other tools. So for him Pull Request still does not exists. And that’s where our feature comes in.