# Gerrit 2.14

Download: **[2.14.1](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.1.war)**
| [2.14](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.war)

Documentation: **[2.14.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/index.html)**
| [2.14](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/index.html)

[TOC]

## Release Highlights

* Changes can be assigned to specific users
* Open and Abandoned changes can be deleted
* HTML emails and new templating framework
* Support for receiving review comments by email
* New [Polymer](https://www.polymer-project.org/) based user interface
* Support for elliptic curve/ed25519 SSH keys
* Secondary index with Elastic Search (experimental)

## Important Notes

### Schema Changes

This release contains schema changes. To upgrade:

``` sh
  java -jar gerrit.war init -d site_path
```

### Java 8

Gerrit now requires Java Runtime Environment (JRE) version 8. It is no longer
possible to run Gerrit on JRE 7.

### Bouncy Castle Libraries

The [Bouncy Castle Crypto API libraries](https://www.bouncycastle.org/) are now
distributed in the Gerrit `.war` file rather than being downloaded during site
initialization. When upgrading from a previous version of Gerrit, previously
downloaded Bouncy Castle `.jar` files remaining in the site's `/lib` folder will
be disabled by appending `.disabled` to the file name.

### HTTP Digest Authentication Removed

Support for HTTP Digest Authentiation is removed.

With the move to NoteDB, the per-account data (including the HTTP password) will
be stored in a branch in the `All-Users` repo, where it is subject to Gerrit ACLs.
Since these are notoriously hard to setup correctly, we want to avoid storing the
password in plaintext.

Existing passwords will be migrated to a hashed password during site initialization
when upgrading from an earlier version of Gerrit.

### Evaluation of BLOCK permission rules has changed

An exclusive ALLOW permission now has priority over a BLOCK permission when
both permissions are defined on the same project.

This means an exclusive ALLOW rule now overrules BLOCK rules on the same
project.

BLOCK rules still cannot be overruled by child projects.

This change makes it possible to allow a permission for a specific ref and to
block the same permission for all other refs. For example, it is now possible to
allow all users to push changes for review, but to block all direct pushes:

---
  [access "refs/*"]
    push = block group Anonymous Users
  [access "refs/for/*"]
    exclusiveGroupPermissions = push
    push = group Registered Users
---

### Deprecation of Velocity Email Templates

This release deprecates the use of Velocity mail templates. In a future release
support will be removed and it will be necessary to upgrade custom mail templates
to Soy files.

### Tag Permissions

The permissions "Push Annotated Tag" and "Push Signed Tag" are renamed to
"Create Annotated Tag" and "Create Signed Tag". Existing project configurations
using the old permission names will be migrated during site initialization.

### Behavior change in ref-update hook

Instead of being invoked on every commit received, the `ref-update` hook is now
invoked before the ref update operation is finalized. The previous behavior of
the `ref-update` hook is moved into a new hook named `commit-received`.

Sites using the `ref-update` hook should rename the hook file to `commit-received`.

## New Features

### Change Assignee

Changes may be assigned to a specific user. This allows a workflow where the
user that is assigned to a change is responsible for reviewing the change and/or
passing the assignment on to another user.

In the UI, changes assigned to the currently logged in user are highlighted.

A new `assignee:` search predicate allows to find changes assigned to a given
user.

### Delete Changes

* [Issue 4509](https://bugs.chromium.org/p/gerrit/issues/detail?id=4509):
Open and Abandoned changes can be deleted by administrators and by users who have
the
[Delete Own Changes](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/access-control.html#category_delete_own_changes)
permission.

### Emails

#### HTML Emails

Gerrit email messages are made easier to read by sending HTML content parts in
addition to the existing text email content. This is enabled by default, and
can be disabled by setting
[`sendemail.html`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#sendemail.html)
to `false`.

Users can opt to always receive plaintext emails by setting the
[Email Format preference](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/intro-user.html#email-format).

#### Closure Templates

Mail templates can now be written using
[Closure Templates (Soy)](https://developers.google.com/closure/templates/). Mail
templates written in Velocity (VTL) are deprecated but still supported. Support
for VTL will be dropped in the next release.

#### Review Comments by Email

Gerrit now supports
[receiving review comments by email](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/intro-user.html#reply-by-email).

### Secondary Index with Elastic Search

It is possible to enable Elastic Search as a secondary index by setting
[`index.type`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#index.type)
to `ELASTICSEARCH` and configuring the
[Elastic Search specific configuration parameters](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#elasticsearch).

Note that the Elastic Search implementation is still considered experimental
and it is not advised to use it for production systems.

### User Interface

* Tags can be created and deleted via the Tags screen in the UI.

* For merge commits, the list of commits that will be merged into the destination
branch is included as the `/MERGE_LIST` magic file which is shown as `Merge List`
in the UI.

### REST API

#### Accounts

* [Get Account Status](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#get-account-status)
* [Set Account Status](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#set-account-status)
* [Get Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#get-account-external-ids)
* [Delete Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#delete-account-external-ids)

#### Changes

* [Get Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-assignee)
* [Get Past Assignees](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-past-assignees)
* [Set Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#set-assignee)
* [Delete Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#delete-assignee)
* [List Change Robot Comments](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-change-robot-comments)
* [Create Merge Patch Set](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#create-merge-patch-set-for-change)
* [Get Description](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-description)
* [Set Description](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#set-description)
* [Get Merge List](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-merge-list)
* [Get Submit Preview](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#submit-preview)
* [List Revision Reviewers](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-revision-reviewers)
* [List Revision Votes](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-revision-votes)
* [Delete Revision Vote](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#delete-revision-vote)

#### Groups

* [Query Groups](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-groups.html#query-groups)
* [Index Group](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-groups.html#index-group)

#### Projects

* [Delete Tag](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-projects.html#delete-tag)
* [Delete Tags](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-projects.html#delete-tags)

#### Revisions

* [List Robot Comments](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-robot-comments)
* [Get Robot Comment](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-robot-comment)

### New User Interface ("PolyGerrit")

Gerrit now includes a new user interface, referred to as "PolyGerrit", based on
[Polymer](https://www.polymer-project.org/).

The UI can be switched between PolyGerrit and GWT by clicking the "New UI" and
"Old UI" links in the site footer. Alternatively, the UI can be switched by
adding `?polygerrit=1` or `?polygerrit=0` to the URL.

Note that PolyGerrit is still under development. Most use cases are supported,
but there are still some missing features compared to the GWT UI.

### SSHD

* [Issue 4507](https://bugs.chromium.org/p/gerrit/issues/detail?id=4507):
Add support for elliptic curve/ed25519 SSH keys.

## Bugfixes

* [Issue 5234](https://bugs.chromium.org/p/gerrit/issues/detail?id=5234):
Fix SSH GSSAPI authentication.

* [Issue 5739](https://bugs.chromium.org/p/gerrit/issues/detail?id=5739):
Prevent `ref-update` hook from being invoked on every commit when pushing
multiple commits.

  Instead of being invoked on every commit received, the `ref-update` hook
  is now invoked before the ref update operation is finalized. Note that
  the hook is no longer invoked on commits pushed for review or on changes
  that are merged. It is invoked for creation/deletion of refs, and for
  ref updates caused by direct pushes (i.e. bypassing review).

  The previous behavior of the `ref-update` hook is moved into a new hook
  named `commit-received`. A new parameter `--cmdref` is added, and the
  special handling of `refs/for` and `refs/changes` is removed.

  Sites using the `ref-update` hook should rename the hook file to
  `commit-received`.

## Dependency Updates

* Update auto-value to 1.4

* Update Bouncy Castle to 1.56

* Update codemirror to 5.25.0

* Update commons-compress to 1.12

* Update Guava to 21.0

* Update Guice to 4.1.0

* Update GWT to 2.8.0

* Update gwtjsonrpc to 1.11

* Update gwtorm to 1.17

* Update JavaEWAH to 1.1.6

* Update JGit to 4.7.0.201704051617-r

* Update jsch to 0.54

* Update Lucene to 5.5.2

* Update mina to 2.0.16

* Update ow2-asm to 5.1

* Update prolog-cafe to 1.4.2

* Update SSHD to 1.4.0


## Bugfix Releases

### 2.14.1 {#2.14.1}

* Add support for Git LFS locking.

  Plugins implementing LFS may now include support for
  [locking](https://github.com/git-lfs/git-lfs/blob/master/docs/api/locking.md).

* Upgrade JGit to 4.7.1.201706071930-r.

  This includes a fix to make auto GC run in the background.

  In some cases, the auto GC limit is lower than the true number of
  unreachable loose objects, so auto GC will run after every (e.g) fetch
  operation.  This leads to the appearance of poor fetch performance.
  Since these GCs will never make progress (until either the objects
  become referenced, or the two week timeout expires), blocking on them
  simply reduces throughput.

* Allow multiple Servlet filters on Jetty HTTPD.

  It is now possible to specify multiple values for
  [`httpd.filterClass`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#httpd.filterClass).

* Allow to set Jetty HTTPD socket timeout.

  A new setting [`httpd.idleTimeout`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#httpd.idleTimeout)
  makes the Jetty HTTPD socket timeout configurable so to tailor the socket
  and thread consumption to the needs of setups with different latencies and
  bandwidth.

* Add a `group indexed` extension point.

  Similar to the existing `change indexed` and `account indexed `extension points,
  this allows plugins to be notified when a group has been indexed.

* Extend upload validation interface to allow listening to negotiation start.

  This can be used to check rate limits for fetch requests. Rate limits
  should be checked before git transport negotation starts to avoid
  unnecessary work in case the limit is already reached.

* Fix support for ECDSA and ED25519 SSH keys.

  ECDSA and ED25519 SSH host keys were not generated during site initialization
  and were not loaded if they existed.

* Fix initialization failure when removing old Bouncy Castle library fails.

  During initialization, old Bouncy Castle libraries are renamed with a `.backup`
  suffix, but if the destination file already existed the initialization would
  fail with a fatal error. Now a warning is printed and the initialization
  continues.

* [Issue 6278](https://bugs.chromium.org/p/gerrit/issues/detail?id=6278):
Fix internal server error when cloning from slave over HTTP.

* Fix firing change related events for deleted change.

* [Issue 5393](https://bugs.chromium.org/p/gerrit/issues/detail?id=5393):
Improve the performance of reviewer suggestion.

* [Issue 6173](https://bugs.chromium.org/p/gerrit/issues/detail?id=6173):
Fix setting
[`sshd.idleTimeout`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#sshd.idleTimeout)
for nio2 backend.

  The idle timeout was not properly set for the nio2 backend, so connections
  would always time out with the default value (10 minutes).

* Improve error message when publishing an already published change edit.

* Fix ref visibility checks in dashboards.

* Replication plugin: Fix replication retries when `maxRetries` is set to 0.

* Fix autocomplete for Firefox on LDAP login screen.

* Add support for mariadb in AccountPatchReviewStore.

* Fix notifications for comments on draft patch sets.

* Fix internal server error when deleting current patch set and previous patch
set doesn't exist.

* [Issue 6176](https://bugs.chromium.org/p/gerrit/issues/detail?id=6176):
Fix internal server error when old patch set is not found.

* Always use SSL implicitly for POP3 and IMAP.

  If `receiveemail.encryption` is set to TLS/SSL, we always want to use the
  implicit mode to execute the TLS/SSL command right after establishing
  the conection with the mail server. Strict mail servers like Gmail would
  close the connection prematurely otherwise.

* Allow plugins to non-transitively depend on prolog rules.

* [Issue 6367](https://bugs.chromium.org/p/gerrit/issues/detail?id=6367):
Allow to set blocking label range rules in permission rule editor.

* PolyGerrit UI

    * [Issue 6096](https://bugs.chromium.org/p/gerrit/issues/detail?id=6096):
      Add an "up" button to the diff screen.

    * [Issue 6041](https://bugs.chromium.org/p/gerrit/issues/detail?id=6041):
      Display `/MERGE_LIST` and `/COMMIT_MESSAGE` as `Merge List` and
      `Commit Message`.

    * [Issue 6080](https://bugs.chromium.org/p/gerrit/issues/detail?id=6080):
      Allow editing status when full name is not editable.

    * [Issue 6166](https://bugs.chromium.org/p/gerrit/issues/detail?id=6166):
      Fix loading favicon on a prefixed URL.

    * Make sure 'Merge Conflict' displays on change view.

    * Use a default name for accounts that do not have a display name.

### 2.14.2 *(In development)* {#2.14.2}

* [Issue 6472](https://bugs.chromium.org/p/gerrit/issues/detail?id=6472):
Fix online reindexing for plugin-dependent rules.

* [Issue 6473](https://bugs.chromium.org/p/gerrit/issues/detail?id=6473):
Fix display of columns in projects tables.

* [Issue 6099](https://bugs.chromium.org/p/gerrit/issues/detail?id=6099):
Set reflog message and identity when merging changes.

* [Issue 6591](https://bugs.chromium.org/p/gerrit/issues/detail?id=6591):
Fix deletion of branches when the `refs/heads/` prefix is omitted.

* [Issue 6605](https://bugs.chromium.org/p/gerrit/issues/detail?id=6605):
Fix searching for change by Change-Id triplet when project name matches Change-Id pattern.

  For projects whose name matched the Change-Id pattern, i.e. named something
  like `iabcde`, it was not possible to search for changes using the Change-Id
  triplet `project~branch~changeId`.

* [Issue 3345](https://bugs.chromium.org/p/gerrit/issues/detail?id=3345):
Preserve line endings in inline editor.

* [Issue 6508](https://bugs.chromium.org/p/gerrit/issues/detail?id=6508):
Fix hook configuration names to match documentation

  Most hooks in the documentation are named with "Hook" suffix, but
  in the code the "Hook" suffix was omitted. This prevented the hook
  from being found when the administrator configured it with the
  documented name.

* Don't index missing accounts.

* Disable auto-reindexing if stale during offline Reindex.

* Fix title of revision field for creating new tag in the UI.

* Suggest `self` before other users in search operator suggestions.

  For query operators that expect a user, the suggestion included other
  users whose name begins with "sel" before "self". Since "self" is
  more frequently used, it should be suggested first.

* Load external IDs from primary storage (ReviewDb).

  On sign in we can't access the account index to lookup external IDs
  since Gerrit slaves don't have an account index, but Gerrit slaves must
  be able to sign in. Instead load the external ID from the primary
  storage which is ReviewDb in 2.14.

* Extend `shortSubject` field to 72 characters in soy email template.

* Align lib modules load injector on Jetty and external containers.

  Align the startup of Gerrit with a standalone Jetty container to the
  WebAppInitializer and load the user-provided Guice modules in the
  sysInjector instead of the DbInjector.

  This Allows overriding some of the default bindings of Gerrit
  (e.g. repository manager or permissions backend) with custom-made
  alternate implementations.

* Fix cyclic dependency when using `site_path` from `system_config` table.

  The starting mode where `site_path` is not specified (as a system property)
  and Gerrit first connects to the database using the ReviewDb JNDI property
  from the servlet container was broken since version 2.13 due to a cyclic
  dependency in Guice bindings.
