Gerrit Project News #10: June-November 2020
New Features
Attention Set
We are happy to announce that the new attention set feature is now available and turned on for Google’s hosted Gerrit sites. This feature allows users to better understand whose turn it is in a review. Attention arrows are now displayed beside the user name and in the dashboard. You can read more about the attention set here.
Attention can be assigned to a user (e.g. owner, reviewer or CC) by hovering over their name on the change page and clicking “Add to attention set”, or while replying to a change.
The attention set will be available in the next v3.3 release.
New Account Cache
The “accounts” cache was reworked and persisted. It holds the account details and all the information stored under the user’s ref. The new design requires a lot less I/O when an entry needs to be reloaded and lowered the ratio of cache misses in case of user’s details updates.
Projects Cache
We persisted the “projects” cache by splitting it into 2 caches: an in-memory cache and a persisted cache. The former is keyed by the project name and does not need to look up the ObjectId of refs/meta/config in NoteDb. The latter is a persisted variant of the “projects” cache and allows admins to persist the project cache - if desired - to ease cold start times.
Ported Comments
Gerrit now supports porting comments of other revisions to a requested revision. Two new endpoints are now available: GET ported comments and GET ported drafts. Ported comments is an important feature that will help users view unresolved comments from all patchsets on the latest patchset, hence helping users not to miss them. This feature will soon be available in the polygerrit UI.
Comment Context
The “List Change Comments” endpoint now has an enable_context parameter that allows retrieving the lines of the source file where the comment was written. This feature will soon be available in the polygerrit UI.
Patchset Level Comments
We introduced a new type of comments: patchset-level comments are associated with a specific patchset but are not attached to any file or line. So what you are saying in the “Reply” dialog becomes a threaded conversation with an “unresolved” flag.
Coming Next
Upcoming features for comments will soon be available in the user interface. This includes ported comments, comment context and others.
UI Enhancements
Comment Links
The destination of comment links has changed to point to the diff between the comment’s patchset vs. latest instead of the comment’s patchset vs. base. This helps reviewers quickly check that their comments have been addressed. New keyboard shortcuts were also added for quickly changing the patchset choice.
Unresolved comments in the dashboard
A new icon was added to the dashboard in the “CR” column if the change has unresolved comments.
Plugins
Code Owners
The new code-owners plugin is now available to support defining owners for files in a repository. If the code-owners plugin is enabled, changes can only be submitted if all touched files are covered by approvals from code owners.
Download Commands
The “Download patch” UI now includes an option for creating a local branch. This allows developers who are not familiar with the idiosyncrasies of repo, to easily create a local branch when checking out changes.
Cache ChronicleMap
We added a new non-blocking and super-fast on-disk cache to the Gerrit modules. The cache is based on ChronicleMap on-disk implementation. More instructions on how to build and use the new module is available here.
Product Updates
Project Members and ESC
The Engineering steering committee had changed in October 2020:
- Han-Wen Nienhuys replaced Alice Kober-Sotzek for the Google affiliation.
- Saša Živkov replaced David Pursehouse for the non-Google affiliation.
We would like to thank Alice and David once again for their uniquely significant contibutions to Gerrit. They will be missed. Yet we are happy to welcome Han-Wen and Saša for these new roles alongside their lasting maintainer ones. Thanks for joining our ESC!
More information about the project members here.
Default Java 11 Language Level
The Java language level is now set to Java 11 by default for Gerrit. Java 8 is still supported and can be used by doing a rebuild for Gerrit.
Typescript Migration
Gerrit’s Javascript codebase was recently migrated to Typescript. This would allow for a lot of new benefits including class and module support, static type checking and clear library API definition, among others.
Community
Virtual Contributor Summit 2020
The Gerrit community had a virtual 2-days event with various talks and discussions. The presentation slides and notes are available from the agenda.