Gerrit 2.15 (Release candidate)

Release Highlights

  • New change workflows for changes not yet ready for full review (formerly Drafts).

  • The new PolyGerrit UI is mature enough for most uses.

  • All account data is stored in NoteDb,

  • NoteDb for change metadata is considered stable, and new sites use it by default.

  • NoteDb migration for change metadata is available.

  • Made several improvements and additions to the documentation to help users find the information they need.

Important Notes

Schema Changes

This release contains schema changes. To upgrade:

  java -jar gerrit.war init -d site_path

Support for draft changes removed

Support for draft changes and draft patch sets has been removed. When upgrading from an earlier version of Gerrit all draft changes, or changes with draft patch sets (even if the highest patch set is not a draft), will be migrated.

By default, such changes are migrated to Private Changes (see below). However, this means that changes with at least one unpublished draft patch set are now completely private, hence the visibility of all patch sets is now restricted.

That also applies to any merged change that contained a draft patch set. Change owners can find such changes with the query owner:self status:merged is:private, and make them public again using the “Unmark Private” option in the UI, or using the REST API.

Alternatively, when upgrading from an earlier version of Gerrit, you can specify that changes with draft patch sets are instead migrated to Work-In-Progress changes (see below). However, note that this means that draft patch sets, which were previously hidden, are now visible.

Release Signatures

Starting in the 2.14.x bugfix series, all release JARs and documentations are signed by the Gerrit maintainers. This policy will continue for all future releases.

New URL Scheme

By default, all Gerrit URLs generated and used by the UI include not just the change number but the project name as well.

  • https://gerrit.mycompany.com/1234 becomes https://gerrit.mycompany.com/c/some/project/+/1234
  • https://gerrit.mycompany.com/#/c/1234 becomes https://gerrit.mycompany.com/#/c/some/project/+/1234
  • https://gerrit.mycompany.com/changes/1234 becomes https://gerrit.mycompany.com/some%2Fproject~1234

In addition to providing more context to humans reading the URL, this new scheme improves performance under NoteDb, and paves the way for load balancing a multi-master installation with repository affinity.

Old URLs will continue to be supported, and simply redirect to the new URLs.

NoteDb for Accounts

All account data is now stored in NoteDb. The account data is migrated automatically during the upgrade process by running gerrit.war init.

For Gerrit slaves the branches that contain the account data must be replicated.

NoteDb for Changes

With this release, the new Gerrit storage backend, NoteDb, is officially supported for storing change metadata and is the default storage backend for new installations.

For existing sites, migration to the new backend may be done either offline or online in a running server.

Support for ReviewDb will be removed in Gerrit 3.0. Gerrit 3.0 will only support offline migration; to run an online migration, you must use the 2.15.x series.

Daemon User Setup

The setup documentation now recommends setting up a user named gerrit instead of gerrit2. This username can be anything; the choice of name doesn't affect any functionality. However, some example commands in the documentation may refer to the new gerrit user, so admins might need to tweak them to refer to gerrit2 instead.

New Features

PolyGerrit UI

  • Implement admin interface (projects, groups and plugins).

  • Refreshed UI based on material design.

  • Add hashtag support.

  • Add support to show uploader on change screen.

  • Lots of bug fixes.

New Workflows

Draft, Private, Work-In-Progress

The draft change feature has been removed, and replaced with two separate features:

Ignore Changes, Mark Reviewed

Changes can be ignored or marked as reviewed to reduce email notifications and keep dashboards cleaner.

Explicitly Record Reverted Changes

When a change is reverted via the “Revert” button, this fact is recorded in the change metadata of the newly-created revert change, not just in the commit message as in the past. A new search operator revertof: allows for searching for reverts of a given change.

Delete Inline Comments

Individual inline comments can be deleted after the fact by site administrators.

CCs Users By Email

Users may be CCed on changes by entering their email address, even if they have not registered an account on the Gerrit server.

This feature is only available when using NoteDb.

Publish Comments on Push

When pushing new patch sets on a change or a series of changes, users can configure Gerrit to automatically publish any pending draft comments they have on those changes, avoiding the need to click through the web UI to publish all comments.

Mark Changes Due to Rebase

When diffing two patch sets of the same change that have different parents, some differences between the patch sets may be due to the rebase, instead of changes between the patch set and its base. These differences are now highlighted in the UI (PolyGerrit only), and are not counted towards the size of diffs.

Improved Push Error Messages

When a push fails due to a permissions problem, the generic message (prohibited by Gerrit) has been replaced with a detailed message describing the exact permissions required.

Documentation updates

With this release, we have updated several sections of the documentation to make it easier for users to find the information they need. These updates include:

We have also made changes to improve navigation throughout the documentation.

REST API

Projects

  • ProjectInfo now contains label configuration information.

Changes

Groups

Config

API

  • New Java API for accessing plugins.

  • New Java API for accessing custom project dashboards.

  • New getGroups method in account API to get a user's group memberships.

  • New ChangeReportFormatter extension point for customizing the report output from git push.

  • Instances of IdString used to return true when equals was given a String instance equal to the IdString's URL-encoded value. This violates symmetry, so this behavior was removed: IdStrings now never compare equal to Strings.

Dependency Updates

  • Update Apache Commons Codec to 1.10

  • Update Apache Commons Compress to 1.13

  • Update Apache Commons Validator to 1.6

  • Update Apache Mina SSHD to 1.6.0

  • Update AutoValue to 1.4.1

  • Update Blame Cache to 0.2-5

  • Update Bouncy Castle to 1.57

  • Update Dropwizard to 3.2.4

  • Update Gitiles Blame to 0.2-4

  • Update GWT to 2.8.1

  • Update Jetty to 9.3.18.v20170406

  • Update JGit to 4.9.0.201710071750-r

  • Update Joda-Time to 2.9.9

  • Update juniversalchardet to 2.0.0

  • Update Lucene to 5.5.4

  • Update Pegdown to 1.6.0

  • Update Polymer to 1.11.0

  • Update Soy to 2017-04-23