blob: 0f93264809e5e1be2e1da2988e240957605652c3 [file] [log] [blame] [view]
# 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):
Hooks plugin: 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.
* [Issue 6609](https://bugs.chromium.org/p/gerrit/issues/detail?id=6609):
Add "indent with tabs" configuration option in inline editor.
* [Issue 6544](https://bugs.chromium.org/p/gerrit/issues/detail?id=6544):
Allow project owners to update project configuration.
* [Issue 6527](https://bugs.chromium.org/p/gerrit/issues/detail?id=6527):
Use quoted-printable for SMTP transfer encoding.
* Fix line wrapping in inline editor.
The line wrapping preference was respected for the diff screens, but not
for the inline editor.
* 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.
* Add missing `throws` declarations on `NotImplemented` classes in the
extension API.
The `throws` were removed as a cleanup in Gerrit 2.14, but this prevenented
classes that extend `NotImplemented` from throwing the exceptions.
* Add support for tag web links.
* Reindex accounts after updating external Ids in `LocalUsernamesToLowerCase`
program.
* Disallow using both `m` and `r` options together in branch and tag
list filters.
* Replication plugin: Fix race condition when scheduling a replication
* Replication plugin: Use rescheduleDelay instead of replicationDelay when
rescheduling.
* PolyGerrit UI
* Add syntax highlighting for kotlin, php, shell, erlang, and puppet.
* [Issue 6557](https://bugs.chromium.org/p/gerrit/issues/detail?id=6557):
Enable multiline range comments in Firefox.
* [Issue 6062](https://bugs.chromium.org/p/gerrit/issues/detail?id=6062):
Fix register links to use base URL.
* [Issue 6205](https://bugs.chromium.org/p/gerrit/issues/detail?id=6205):
Fix internal server error on `/register` with URL prefix.
* [Issue 6693](https://bugs.chromium.org/p/gerrit/issues/detail?id=6693):
Fix back button behavior for hash redirects.