1. 0
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 0
What’s new in Gerrit 3.1
… and beyond
Luca Milanesio
Gerrit Code Review Maintainer
GerritForge
2. 1
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 1
About GerritForge
Founded in
the UK
HQ in
London
Committed to
OpenSource
+ Sunnyvale
CA
3. 2
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 2
Gerrit v3.1 in numbers
Source: analytics.gerrithub.io
5. 4
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 4
New non-core plugins
Checks (Native CI integration, yeah!)
Multi-site (!!!)
Pull-replication
Zookeeper (global ref consistency)
6. 5
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 5
What’s new in v3.1
Polymer 2.0 and shadow DOM
Git Protocol v2 (secured)
Performance improvement and logging
Stability and Fixes
More CI integration (checks plugin)
7. 6
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 6
Git protocol v2
From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html
• Server-side filtering of references
• Easy extensibility for new features
8. 7
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 7
Git protocol v2: server-side filtering
From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html
• Previously: servers responded to all fetch commands with an initial reference
advertisement, listing all references in the repository.
• Sent even when a client only cares about updating a single branch
• Chromium repository (over 500k refs): the server is sending 10s of megabytes of data
that get ignored.
• Projects have seen a performance improvement of 3x for no-op fetches of a single
branch on repositories containing 500k references.
9. 8
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 8
Git protocol v2: done in 3 attempts
See https://groups.google.com/d/topic/repo-discuss/nEkvNVCZzNM/discussion
• v2.16 and v3.0 reverted attempted, because of security vulnerability issues
• Patrick (Google) created PermissionAwareRefDatabase, permission aware repository
abstraction, that will only ever return refs that the user has access to.
• Then Stefano (GerritForge) took over this change and fixed some problems
• Adjustments in JGit, Thanks for review to Matthias (SAP)
• The whole series in Gerrit was reviewed by Han Wen (Google), Thanks!
10. 9
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 9
Git protocol v2: how we tested it
In context of the third attempt to enable Git wire protocol v2 in Gerrit:
• Start the whole nine yard Gerrit server using StandaloneSiteTest base class
• Retrieve both SSH and HTTP ports assigned during server start
• Configure SSH private/public keys for SSH access and upload them to Gerrit using
plugin API
• Configure HTTP passwords for test users using Gerrit plugin API
• Access Gerrit server with git-core client using Java's ProcessBuilder facility
11. 10
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 10
Git protocol v2: how to enable it
In context of the third attempt to enable Git wire protocol v2 in Gerrit:
<gerrit-site>/etc/jgit.config
[protocol]
version = 2
* Verify that recent Git client is installed (v2.18 or later):
$ git --version
git version 2.23.0
* Activate protocol.version 2 in ~/.gitconfig
* Demo Git protocol v2:
$ GIT_TRACE_PACKET=1 git ls-remote https://review.gerrithub.io/GerritCodeReview/bazlets
07:59:25.849401 pkt-line.c:80 packet: git< version 2
12. 11
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 11
Breaking changes in v3.1
Push to refs/drafts/* removed
Push to refs/changes/* removed
13. 12
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 12
Breaking changes in v3.1
JGit config read from
$GERRIT_SITE/etc/jgit.config
(bye bye ~/.gitconfig)
14. 13
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 13
Roadmap to Gerrit v3.2 and beyond
• Pluggable authentication backends
• Group deletion
• Polymer 3
• Introduction of the ”attention set” instead of
assignee
• Robot comments
• Support for apply/fix feature
15. 14
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 14
Roadmap to Gerrit v3.2 and beyond
• Performance improvements
• Git push performance
• PolyGerrit UI latency
• Gerrit caches with caffeine
• Repos with large number of refs (experimental: reftable)
• Faster persistent cache than H2
• Support for large mono-repos
• Support for Java 11
• Better GC algorithm: ZGC
• Support for very large heaps (up to TBytes of memory)
16. 15
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 15
Roadmap to Gerrit v3.2 plugins
• Replication plugin
• Multi-master support
• External replication queue
• Checks plugin
• Support for sub-checks
• Override status
• High-availability plugin
• Integration with global ref-db
• Multiple concurrent writes on all nodes
17. 16
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 16
Q&A: excited about the future of Gerrit?
Image from: http://cypp.rutgers.edu/ru-voting/political-information/public-opinion-polls/
18. 17
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 17
Wants to know more?
GerritForge.com/contact