= Release notes for Gerrit 2.13


Gerrit 2.13 is now available:

link:https://www.gerritcodereview.com/download/gerrit-2.13.war[
https://www.gerritcodereview.com/download/gerrit-2.13.war]


== Important Notes

*WARNING:* This release contains schema changes.  To upgrade:
----
  java -jar gerrit.war init -d site_path
----

*WARNING:* To use online reindexing for `changes` secondary index when upgrading
to 2.13.x, the server must first be upgraded to 2.8 (or 2.9) and then through
2.10, 2.11 and 2.12. Skipping a version will prevent online reindexer from
working.

Since 2.13 introduces a new secondary index for accounts, it must be indexed
offline before starting Gerrit:
----
  java -jar gerrit.war reindex --index accounts -d site_path
----
If reindexing will be done offline, you may ignore these warnings and upgrade
directly to 2.13.x using the following command that will reindex both `changes`
and `accounts` secondary indexes:
----
  java -jar gerrit.war reindex -d site_path
----

*WARNING:* The server side hooks functionality is moved to a core plugin. Sites
that make use of server side hooks must install this plugin during site init.


== Release Highlights

* Support for Large File Storage (LFS).

* Metrics interface.

* Hooks plugin.

* Secondary index for accounts.

* File annotations (blame) in side-by-side diff.

== New Features

=== Large File Storage (LFS)

Gerrit provides an
link:https://gerrit-review.googlesource.com/Documentation/dev-plugins.html#lfs-extension[
extension point] that enables development of plugins implementing the
link:https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md[
LFS protocol].

By setting
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#lfs.plugin[
`lfs.plugin`] the administrator can configure the name of the plugin
which handles LFS requests.

=== Access control for git submodule subscriptions

To prevent potential security breaches as described in
link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3311[issue 3311],
it is now only possible for a project to subscribe to a submodule if the
submodule explicitly allows itself to be subscribed.

Please see the
link://https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-submodules.html[
submodules user guide] for details.

Note that when upgrading from an earlier version of Gerrit, permissions for
any existing subscriptions will be automatically added during the database
schema migration.

=== Metrics

Metrics about Gerrit's internal state can be sent to external
monitoring systems.

Plugins can provide implementations of the metrics interface to
report metrics to different monitoring systems. The following
plugins are available:

* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-jmx[
JMX]

* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-graphite[
Graphite]

* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-elasticsearch[
Elasticsearch]

Plugins can also provide their own metrics.

See the link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/metrics.html[
metrics documentation] for further details.

=== Hooks

Server side hooks are moved to the
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/hooks[
hooks plugin]. Sites that make use of server side hooks should install this
plugin. After installing the plugin, no additional configuration is needed.
The plugin uses the same configuration settings in `gerrit.config`.

=== Secondary Index

* The secondary index now supports indexing of accounts.
+
The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/pgm-reindex.html[
reindex program] by default reindexes all changes and accounts. A new
option allows to explicitly specify whether to reindex changes or accounts.
+
The `suggest.fullTextSearch`, `suggest.fullTextSearchMaxMatches` and
`suggest.fullTextSearchRefresh` configuration options are removed. Full text
search is supported by default with the account secondary index.

* New ssh command to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/cmd-index-changes.html[
reindex changes].


=== UI

* The UI can now be loaded in an iFrame by enabling
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#gerrit.canLoadInIFrame[
gerrit.canLoadInIFrame] in the site configuration.

==== Change Screen

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=106[Issue 106]:
Allow to select merge commit's parent for diff base in change screen.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3035[Issue 3035]:
Allow to remove specific votes from a change, while leaving the reviewer on the
change.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3487[Issue 3487]:
Use 'Ctrl-Alt-e' instead of 'e' to open edit mode.

==== Diff Screens

* Add all syntax highlighting available in CodeMirror.

* Improve search experience in diff screen
+
Ctrl-F, Ctrl-G and Shift-Ctrl-G now bind to the search dialog box provided by
CodeMirror's search add-on. Enter and Shift-Enter navigate among the search
results from the CodeMirror search, just like they do in a normal browser
search. Esc now clears the search result.
+
If the user sets `Render` to `Slow` in the diff preferences and the file is less
than 4000 lines (huge), then Ctrl-F, Ctrl-G and Shift-Ctrl-G fall back to the
browser search.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=2968[Issue 2968]:
Allow to go back to change list by keyboard shortcut from diff screens.

==== Side-By-Side Diff Screen

* Blame annotations
+
By enabling
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#change.allowBlame[
`change.allowBlame`], blame annotations can be shown in the side-by-side diff
screen gutter. Clicking the annotation opens the relevant change.

==== User Preferences

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=989[Issue 989]:
New option to control email notifications.
+
Users can now choose between 'Enabled', 'Disabled' and 'CC Me on Comments I Write'.

* New option to control adding 'Signed-off-by' footer in commit message of new changes
created online.

* New option to control auto-indent width in inline editor.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=890[Issue 890]:
New diff option to control whether to skip unchanged files when navigating to
the previous or the next file.

=== Changes

In order to avoid potentially confusing behavior, when submitting changes in a
batch, submit type rules may not be used to mix submit types on a single branch,
and trying to submit such a batch will fail.

=== REST API

==== Accounts

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3766[Issue 3766]:
Allow users with the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/access-control.html#capability_modifyAccount[
'ModifyAccount' capability] to get the preferences for other users via the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-user-preferences[
Get User Preferences] endpoint.

* Rename 'Suggest Account' to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#query-account[
'Query Account'] and add support for arbitrary account queries.
+
The `_more_accounts` flag is set on the last result when there are more results
than the limit. The `DETAILS` and `ALL_EMAILS` options may be set to control
whether the results should include details (full name, email, username, avatars)
and all emails, respectively.

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-watched-projects[
Get Watched Projects].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#set-watched-projects[
Set Watched Projects].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#delete-watched-projects[
Delete Watched Projects].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-stars[
Get Star Labels from Change].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#set-stars[
Update Star Labels on Change].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-oauth-token[
Get OAuth Access Token].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#list-contributor-agreements[
List Contributor Agreements].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#sign-contributor-agreement[
Sign Contributor Agreement].

==== Changes

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3579[Issue 3579]:
Append submitted info to ChangeInfo.

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-changes.html#move-change[
Move Change].

==== Groups

* Add `-s` as an alias for `--suggest` on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-groups.html#suggest-group[
Suggest Group] endpoint.

==== Projects

* Add `async` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#run-gc[
Run GC] endpoint to allow garbage collection to run asynchronously.

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#get-access[
List Access Rights].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#set-access[
Add, Update and Delete Access Rights].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#create-tag[
Create Tag].

* New endpoint:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#get-mergeable-info[
Get Mergeable Information].

=== Plugins

* Secure settings
+
Plugins may now store secure settings in `etc/$PLUGIN.secure.config` where they
will be decoded by the Secure Store implementation.

* Exported dependencies
+
Gson is now an exported dependency. Plugin no longer need to explicitly add
a dependency on it.

=== Misc

* New project option to reject implicit merge commits.
+
The 'Reject Implicit Merges' option can be enabled to prevent non-merge commits
from implicitly bringing unwanted changes into a branch. This can happen for
example when a commit is made based on one branch but is mistakenly pushed to
another, for example based on `refs/heads/master` but pushed to `refs/for/stable`.

* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/access-control.html#category_add_patch_set[
Add Patch Set capability] to control who is allowed to upload a new patch
set to an existing change.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4015[Issue 4015]:
Allow setting a
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-upload.html#message[
comment message] when uploading a change.

* Allow to specify
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-upload.html#notify[
who should be notified by email] when uploading a change.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3220[Issue 3220]:
Append approval info to every comment-added stream event and hook.

* The `administrateServer` capability can be assigned to groups by setting
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#capability.administrateServer[
capability.administrateServer] in the site configuration.
+
Configuring this option can be a useful fail-safe to recover a server in the
event an administrator removed all groups from the `administrateServer`
capability, or to ensure that specific groups always have administration
capabilities.

* New configuration options to configure JGit repository cache parameters.
+
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#core.repositoryCacheCleanupDelay[
core.repositoryCacheCleanupDelay] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#core.repositoryCacheExpireAfter[
core.repositoryCacheExpireAfter] can be configured.

* Accept `-b` as an alias of `--batch` in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/pgm-init.html[
init program].


== Bug Fixes

* Don't add the same SSH key multiple times.
+
If an already existing SSH key was added, a duplicate entry was added to the
list of user's SSH keys.

* Respect the 'Require a valid contributor agreement to upload' setting
when creating changes via the UI.
+
If a user had not signed a CLA, it was still possible for them to create a new
change with the 'Revert' or 'Cherry Pick' button.

* Make Lucene index more stable when being interrupted.

* Don't show the `start` and `idle` columns in the `show-connections`
output when the ssh backend is NIO2.
+
The NIO2 backend doesn't provide the start and idle times, and the
values being displayed were just dummy values. Now these values are
only displayed for the MINA backend.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4150[Issue 4150]:
Deleting a draft inline comment no longer causes the change's `Updated` field to
be bumped.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4099[Issue 4099]:
Fix SubmitWholeTopic does not update subscriptions.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3603[Issue 3603]:
Fix editing a submodule via inline edit.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4069[Issue 4069]:
Fix highlights in scrollbar overview ruler not moved when extending the
displayed area.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3446[Issue 3446]:
Respect the `Skip Deleted` diff preference.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3445[Issue 3445]:
Respect the `Skip Uncommented` diff preference.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4051[Issue 4051]:
Fix empty `From` email header.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3423[Issue 3423]:
Fix intraline diff for added spaces.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=1867[Issue 1867]:
Remove `no changes made` error case when the only difference between a new
commit and the previous patch set of the change is the committer.

Remove "no changes made" error case
* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3831[Issue 3831]:
Prevent creating groups with the same name as a system group.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3754[Issue 3754]:
Fix `View All Accounts` permission to allow accounts REST endpoint to access
email info.

* Make `gitweb.type` default to `disabled` when not explicitly set.
+
Previously the behavior was not documented and it would default to type
`gitweb`. In cases where there was no gitweb config at all, this would
result in broken links due to `null` being used as the URL.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4488[Issue 4488]:
Improve error message when Change-Id line is missing in commit message.
+
The error message now includes the sha1 of the commit, so that it is
easier to track down which commit failed validation when multiple commits
are pushed at the same time.

* Don't check mergeability of draft changes.
+
Draft changes can be deleted but not abandoned so there is no way for
an administrator to get rid of the them on behalf of the users. This can
become a problem when there many draft changes because the mergeability
check can be costly.
+
The mergeability check is no longer done for draft changes, but will be
done when the draft change is published.

* Fix internal server error when plugin-provided file history weblink
is null.
+
It is valid for a plugin to provide a null weblink, but doing so resulted
in an internal server error.

== Dependency updates

* Add dependency on blame-cache 0.1-9

* Add dependency on guava-retrying 2.0.0

* Add dependency on jsr305 3.0.1

* Add dependency on metrics-core 3.1.2

* Upgrade auto-value to 1.3-rc1

* Upgrade commons-net to 3.5

* Upgrade CodeMirror to 5.17.0

* Upgrade Guava to 19.0

* Upgrade Gson to 2.7

* Upgrade Guice to 4.1.0

* Upgrade gwtjsonrpc to 1.9

* Upgrade gwtorm to 1.15

* Upgrade javassist to 3.20.0-GA

* Upgrade Jetty to 9.2.14.v20151106

* Upgrade JGit to 4.5.0.201609210915-r

* Upgrade joda-convert to 1.8.1

* Upgrade joda-time to 2.9.4

* Upgrade Lucene to 5.5.0

* Upgrade mina to 2.0.10

* Upgrade sshd-core to 1.2.0
