Release Highlights
-
Support for git protocol v2
-
Polymer 2
-
Mandatory plugins
-
Performance logging and tracing
See the New Features section for further details.
Important Notes
Schema Changes
This release contains schema changes. To upgrade:
java -jar gerrit.war init -d site_path
Breaking Changes
The reviewdb.client
package is renamed to entities
Plugins or extensions that import classes from the com.google.gerrit.reviewdb.client
package must change the imports to com.google.gerrit.entities
.
Changed APIs for Id
and NameKey
classes
Plugins and extensions that instantiate and use classes such as Account.Id
,
Change.Id
, Project.NameKey
, Branch.NameKey
, etc, must adapt to the following
changes.
-
The classes can no longer be instantiated with the
new
operator. Instead they must be created with static factory methods.new Account.Id(...)
–>Account.id(...)
new AccountGroup.Id(...)
–>AccountGroup.id(...)
new AccountGroup.UUID(...)
–>AccountGroup.uuid(...)
new Branch.NameKey(...)
–>BranchNameKey.create(...)
new Project.NameKey(...)
–>Project.nameKey(...)
-
‘Getter’ methods are now generated by the auto-value library and no longer have the
get
prefix.Account.getName()
->Account.name()
- …etc
REST API endpoint implementations must return Response<T>
REST API endpoint implementations must now return a Response
object that
explicitly sets a status code. Plugins that currently only return an Object
must be adapted to the new interface.
Powermock and Easymock are removed
The Powermock and Easymock libraries are no longer exported in the acceptance-framework
artifact, and are replaced by Mockito. Plugins that use Powermock and/or Easymock in their
tests should either add explicit dependencies, or migrate the tests to Mockito.
Polymer 2 and Shadow DOM may break JavaScript plugins
The Gerrit frontend has been migrated from Polymer 1 to
Polymer 2 and to using
Shadow DOM.
This may break JavaScript plugins, e.g. if they use document.getElementById()
to reach
into the DOM. Instead, plugins will have to use dedicated plugin endpoints together
with calling
plugin.registerCustomComponent
.
Browser Support
Internet Explorer is not supported. Major browsers are supported for the following versions and newer: Firefox 68, Chrome 76, Safari 12.1.
Legacy support for pushing to refs/drafts/
is removed
The change.allowDrafts
configuration option is removed, and it is no longer
possible to push new changes or patch sets to refs/drafts/<branch-name>
.
Support for pushing to refs/changes/
is removed
The receive.allowPushToRefsChanges
configuration option is removed, and it is
no longer possible to add a new patch set to a change by pushing to
refs/changes/<change number>
.
JGit Configuration is no longer read from system level .gitconfig
JGit’s configuration options are now read from the $site/etc/jgit.config
file rather than the system level .gitconfig
.
New limit on the number of change meta updates
Many NoteDb operations require walking the entire change meta ref and loading its contents into memory, so changes with arbitrarily many updates may cause high CPU usage, memory pressure, persistent cache bloat, and other problems.
A new configuration option
change.maxUpdates
allows to set the maximum number of updates that are allowed.
container.slave
is renamed to container.replica
The container.slave
option is still recognized as an alias of container.replica
but is deprecated and will be removed in a future release.
New Features
Git Protocol V2
Git protocol V2 is now enabled by default. A new permission-aware ref database ensures that Gerrit only ever returns refs that the calling user has access to.
Mandatory Plugins
It is possible to configure which plugins are mandatory. Gerrit will fail to start if a mandatory plugin cannot be loaded.
Disabling and restarting of a mandatory plugin is rejected, but reloading of a mandatory plugin is still possible.
Replication plugin
- Issue 11196:
Latency metric is now recorded also at a project level, only when
the latency was greater than a configured threshold, configurable in
replication.config
New option to limit options used when rendering internal events.
The new option
event.payload.listChangeOptions
allows to configure which options are used when rendering internal
events. This can be used to reduce performance impact of rendering
many options.
Performance logging and tracing
See the documentation for full details.
REST APIs
-
Accounts
- The
DETAILS
query option on the query accounts endpoint now includes thestatus
andstate
fields in the response.
- The
-
Changes
-
New
SKIP_DIFFSTAT
option for the query changes endpoint.Computation of the
insertions
anddeletions
fields may be expensive for large trees. The newSKIP_DIFFSTAT
option allows to omit it from the result. -
New
exclude-groups
option on the Suggest Reviewers endpoint. -
New optional
commit-message
field on the input for cherry-pick endpoints.If the optional message is provided, it is used, otherwise the message from the cherry-picked change is used.
-
New optional
topic
field on the input for the revert endpoint.If the optional topic is provided, it is used, otherwise the topic from the reverted change is used.
-
-
Config
- The value of
change.api.excludeMergeableInChangeInfo
is now included in the response from the Get Server Info endpoint.
- The value of
-
Projects
-
New endpoint: Update dashboard.
The new endpoint currently only works for the default dashboard.
-
Bug Fixes
-
Issue 5082: Fix internal server error when getting blame for removed/replaced file.
-
Issue 11918: Fix internal server error when deleting a ref by git push.
Dependency Updates
-
Remove easymock, powermock and javassist from the acceptance framework
-
Remove promise-polyfill
-
Add mockito in the acceptance framework
-
Upgrade Apache sshd and mina-core to 2.3.0
-
Upgrade auto-value to 1.7
-
Upgrade bouncycastle to 1.61
-
Upgrade commons-compress to 1.18
-
Upgrade gitiles-servlet and blame-cache to 0.3-6
-
Upgrade jetty to 9.4.18.v20190429
-
Upgrade JGit to v5.5.1.201910021850-r-152-g63fc6970c
-
Upgrade polymer to 2.7.2
-
Upgrade polymerelements/iron-autogrow-textarea to 2.2.0
-
Upgrade polymerelements/iron-dropdown to 2.2.1
-
Upgrade polymerelements/iron-icon to 2.1.0
-
Upgrade polymerelements/iron-iconset-svg to 2.2.1
-
Upgrade polymerelements/iron-input to 2.1.3
-
Upgrade polymerelements/iron-overlay-behavior to 2.3.4
-
Upgrade polymerelements/iron-selector to 2.1.0
-
Upgrade polymerelements/iron-test-helpers to 2.0.1
-
Upgrade polymerelements/test-fixture to 3.0.0
-
Upgrade polymerelements/paper-button to 2.1.3
-
Upgrade polymerelements/paper-input to 2.2.3
-
Upgrade polymerelements/paper-item to 2.1.1
-
Upgrade polymerelements/paper-listbox to 2.1.1
-
Upgrade polymerelements/paper-tabs to 2.1.1
-
Upgrade polymerelements/paper-toggle-button to 2.1.1
-
Upgrade visionmedia/page.js to 1.11.4
-
-
Upgrade truth to 1.0
Bugfix Releases
3.1.1
-
New Features
-
Issue 11973: Add copy-to-clipboard for generated HTTP password.
-
Add support for doctag in PolyGerrit UI syntax highlighter.
-
Add an event interface in the PolyGerrit API.
-
Add support for Elasticsearch 7.5.
-
Add documentation of how to perform backups of Gerrit.
-
-
PolyGerrit UI Fixes
-
Issue 12024: Fix undefined branch in create-destination-dialog.
-
Issue 11969: Fix tab index in reply dialog.
-
Issue 11993: Stop loading fonts from external resources.
-
Issue 11984: Fix top menu bar on iOS.
-
Issue 8282: Avoid browser caching for diff on edit patch.
-
Issue 9444: Fix syntax highlighting for multi-char char constants.
-
Issue 12020: Fix ‘New Contributor Agreement’ screen.
-
Fix
gr-syntax-params
css class. -
Fix overflow of branch name in change list.
-
-
Other Fixes
-
Issue 11989: Fix internal server error when pushing over SSH with git protocol v2.
-
Issue 11962: Fix advertisement of
refs/meta/config
in git protocol v2 when client does not have access to it. -
Issue 11986: Fix fetching individual ref with git protocol v2.
-
Issue 7645: Fix thread deadlock when loading accounts from the account cache.
Replacing Guava caches with Caffeine reduces the chances of having the deadlocks and improves the cache performance.
-
Issue 11918: Fix internal server error when deleting a tag or branch by git push.
-
Issue 11650: Fix reindexing of changes after project is deleted in the
delete-project
plugin. -
Disallow deleting the
refs/meta/config
branch via the ‘Delete Branches’ REST API. -
Disallow deleting the
HEAD
ref via the ‘Delete Branches’ REST API. -
Allow empty base revision in the ‘Create Branch’ and ‘Create Tag’ REST APIs.
-
Fix deletion of draft comment refs.
In some situations, draft comment refs were not properly deleted but left empty. This resulted in unused draft refs persisting in the
All-Users
repository, polluting the namespace. Published draft comments as well as deleted draft comments were kept in the history of the draft ref, keeping them alive for GC, and causing a steady increase of repository size. -
Use correct content type
text/plain
instead ofplain/text
in ‘Create SSH Key’ REST API. -
Fix handling of interactive/batch users in the QoS filter.
For the git-over-http requests this filter didn’t work properly because the basic authentication happened later in the filter chain and at the moment when the QoS filter was invoked the current user was not yet set.
-
Add project name to headers of outgoing change emails.
-
Fix and expand documentation of
ref-update
andcommit-received
hooks in the hooks plugin. -
Upgrade JGit to v5.6.0.201912041214-rc1
-