SlideShare a Scribd company logo
1 of 23
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?

More Related Content

What's hot

IT 도서 출판 프로세스(원고 개발과 편집)-홍연의
IT 도서 출판 프로세스(원고 개발과 편집)-홍연의IT 도서 출판 프로세스(원고 개발과 편집)-홍연의
IT 도서 출판 프로세스(원고 개발과 편집)-홍연의Yeoneui Hong
 
Git extension-training
Git extension-trainingGit extension-training
Git extension-trainingEric Guo
 
Using Java Mission Control & Java Flight Recorder
Using Java Mission Control & Java Flight RecorderUsing Java Mission Control & Java Flight Recorder
Using Java Mission Control & Java Flight RecorderIsuru Perera
 
Using Chaos Engineering to Level up Apache Kafka Skills
Using Chaos Engineering to Level up Apache Kafka Skills Using Chaos Engineering to Level up Apache Kafka Skills
Using Chaos Engineering to Level up Apache Kafka Skills confluent
 
JavaScript From Hell - CONFidence 2.0 2009
JavaScript From Hell - CONFidence 2.0 2009JavaScript From Hell - CONFidence 2.0 2009
JavaScript From Hell - CONFidence 2.0 2009Mario Heiderich
 
Using RAML 1.0 Like a Pro
Using RAML 1.0 Like a ProUsing RAML 1.0 Like a Pro
Using RAML 1.0 Like a ProMuleSoft
 
Introduction to ConstraintLayout
Introduction to ConstraintLayoutIntroduction to ConstraintLayout
Introduction to ConstraintLayoutOmar Albelbaisy
 

What's hot (9)

Introduction to Frida
Introduction to FridaIntroduction to Frida
Introduction to Frida
 
IT 도서 출판 프로세스(원고 개발과 편집)-홍연의
IT 도서 출판 프로세스(원고 개발과 편집)-홍연의IT 도서 출판 프로세스(원고 개발과 편집)-홍연의
IT 도서 출판 프로세스(원고 개발과 편집)-홍연의
 
Git extension-training
Git extension-trainingGit extension-training
Git extension-training
 
Using Java Mission Control & Java Flight Recorder
Using Java Mission Control & Java Flight RecorderUsing Java Mission Control & Java Flight Recorder
Using Java Mission Control & Java Flight Recorder
 
Using Chaos Engineering to Level up Apache Kafka Skills
Using Chaos Engineering to Level up Apache Kafka Skills Using Chaos Engineering to Level up Apache Kafka Skills
Using Chaos Engineering to Level up Apache Kafka Skills
 
Catalog gips carton
Catalog gips cartonCatalog gips carton
Catalog gips carton
 
JavaScript From Hell - CONFidence 2.0 2009
JavaScript From Hell - CONFidence 2.0 2009JavaScript From Hell - CONFidence 2.0 2009
JavaScript From Hell - CONFidence 2.0 2009
 
Using RAML 1.0 Like a Pro
Using RAML 1.0 Like a ProUsing RAML 1.0 Like a Pro
Using RAML 1.0 Like a Pro
 
Introduction to ConstraintLayout
Introduction to ConstraintLayoutIntroduction to ConstraintLayout
Introduction to ConstraintLayout
 

Viewers also liked

Zero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeLuca Milanesio
 
GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, futureLuca Milanesio
 
Gerrit Code Review Analytics
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review AnalyticsLuca Milanesio
 
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
 
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
 
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
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011thkoch
 
Gerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-deliveryGerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-deliveryLuca Milanesio
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginLuca Milanesio
 
0601069 study of assessment methods of working capital requirement
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
 
0601036 causes of attrition amongst the local and outside workers
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 workersSupa Buoy
 
15 lecture presentation0
15 lecture presentation015 lecture presentation0
15 lecture presentation0Uconn Stamford
 
Dvaree
DvareeDvaree
DvareeSale01
 
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)
Ma ch 14 banking and the money supply (1)Uconn Stamford
 
It challenges in a global organization
It challenges in a global organizationIt challenges in a global organization
It challenges in a global organizationYuval Schwabe
 
0601085 perceptible analysis of depository services
0601085 perceptible analysis of depository services0601085 perceptible analysis of depository services
0601085 perceptible analysis of depository servicesSupa Buoy
 
Ionic Liquids in Plastic/Coating Applications - 10 minutes intro to Holland ...
Ionic Liquids in Plastic/Coating  Applications - 10 minutes intro to Holland ...Ionic Liquids in Plastic/Coating  Applications - 10 minutes intro to Holland ...
Ionic Liquids in Plastic/Coating Applications - 10 minutes intro to Holland ...Amabilis Jelliarko Palgunadi
 

Viewers also liked (20)

Zero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review Upgrade
 
Infinite gerrit
Infinite gerritInfinite gerrit
Infinite gerrit
 
GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, future
 
Gerrit Code Review Analytics
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review Analytics
 
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.
 
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
 
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
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011
 
Gerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-deliveryGerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-delivery
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub plugin
 
Audio devices
Audio devicesAudio devices
Audio devices
 
0601069 study of assessment methods of working capital requirement
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
 
0601036 causes of attrition amongst the local and outside workers
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
 
15 lecture presentation0
15 lecture presentation015 lecture presentation0
15 lecture presentation0
 
Dvaree
DvareeDvaree
Dvaree
 
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)
Ma ch 14 banking and the money supply (1)
 
It challenges in a global organization
It challenges in a global organizationIt challenges in a global organization
It challenges in a global organization
 
Ch12 lecture0 (4)
Ch12 lecture0 (4)Ch12 lecture0 (4)
Ch12 lecture0 (4)
 
0601085 perceptible analysis of depository services
0601085 perceptible analysis of depository services0601085 perceptible analysis of depository services
0601085 perceptible analysis of depository services
 
Ionic Liquids in Plastic/Coating Applications - 10 minutes intro to Holland ...
Ionic Liquids in Plastic/Coating  Applications - 10 minutes intro to Holland ...Ionic Liquids in Plastic/Coating  Applications - 10 minutes intro to Holland ...
Ionic Liquids in Plastic/Coating Applications - 10 minutes intro to Holland ...
 

Similar to Bringing Pull Request to Gerrit

Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarCollabNet
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
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
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Apigee | Google Cloud
 
Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0CollabNet
 
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...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...AppDynamics
 
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"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"Fwdays
 
Beyond Gerrit @ Gerrit User Summit 2017, London
Beyond Gerrit @ Gerrit User Summit 2017, LondonBeyond Gerrit @ Gerrit User Summit 2017, London
Beyond Gerrit @ Gerrit User Summit 2017, LondonJacek Centkowski
 
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 ...
Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ...CezzaineZaher1
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
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 DirectionsCollabNet
 
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...
A Reference Architecture to Enable Visibility and Traceability across the Ent...CollabNet
 
Bringing Partners, Teams & Systems Together through APIs
Bringing Partners, Teams & Systems Together through APIsBringing Partners, Teams & Systems Together through APIs
Bringing Partners, Teams & Systems Together through APIsApigee | Google Cloud
 
Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!CollabNet
 
Vizag Virtual Meetup #7: Trending API Topics for 2022
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 2022Ravi Tamada
 
The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015Eduardo Pelegri-Llopart
 
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...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...Jitendra Bafna
 
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 ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...Jason Bloomberg
 
Going Agile in a Multi-National Work Environment and the Tool We Chose
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 ChosePaula Stern
 
Api led connectivity_brazil
Api led connectivity_brazilApi led connectivity_brazil
Api led connectivity_brazilAnupam Gogoi
 
[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...
[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo...WSO2
 
MuleSoft Madrid Meetup #3 slides 2nd July 2020
MuleSoft Madrid Meetup #3 slides 2nd July 2020MuleSoft Madrid Meetup #3 slides 2nd July 2020
MuleSoft Madrid Meetup #3 slides 2nd July 2020Ieva Navickaite
 

Similar to Bringing Pull Request to Gerrit (20)

Optimize Your Enterprise Git Webinar
Optimize Your Enterprise Git WebinarOptimize Your Enterprise Git Webinar
Optimize Your Enterprise Git Webinar
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
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
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
 
Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0Introducing CollabNet TeamForge® 8.0
Introducing CollabNet TeamForge® 8.0
 
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...
AppSphere 15 - How AppDynamics is Shaking up the Synthetic Monitoring Product...
 
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"
Jose Quaresma "DevOps in the Enterprise: what I have learned so far"
 
Beyond Gerrit @ Gerrit User Summit 2017, London
Beyond Gerrit @ Gerrit User Summit 2017, LondonBeyond Gerrit @ Gerrit User Summit 2017, London
Beyond Gerrit @ Gerrit User Summit 2017, London
 
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 ...
Weave GitOps 2023.04 Release: Optimizing Developer Productivity & Experience ...
 
2016 Federal User Group Conference - TeamForge Capabilities and Directions
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
 
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...
A Reference Architecture to Enable Visibility and Traceability across the Ent...
 
Bringing Partners, Teams & Systems Together through APIs
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!
Don't Let Git Get Your Goat!Don't Let Git Get Your Goat!
Don't Let Git Get Your Goat!
 
Vizag Virtual Meetup #7: Trending API Topics for 2022
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
 
The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015The impact of IOT - exchange cala - 2015
The impact of IOT - exchange cala - 2015
 
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...
MuleSoft Surat Virtual Meetup#16 - Anypoint Deployment Option, API and Operat...
 
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 ...
WEBINAR: API Clouds for Faster APIs: Leveraging Existing Assets for the API ...
 
Going Agile in a Multi-National Work Environment and the Tool We Chose
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
 
Api led connectivity_brazil
Api led connectivity_brazilApi led connectivity_brazil
Api led connectivity_brazil
 
[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...
[APIdays Singapore 2019] Managing the API lifecycle with Open Source Technolo...
 
MuleSoft Madrid Meetup #3 slides 2nd July 2020
MuleSoft Madrid Meetup #3 slides 2nd July 2020MuleSoft Madrid Meetup #3 slides 2nd July 2020
MuleSoft Madrid Meetup #3 slides 2nd July 2020
 

Recently uploaded

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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
 

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.