Release notes for Gerrit 2.11.6
===============================

Gerrit 2.11.6 is now available:

link:https://gerrit-releases.storage.googleapis.com/gerrit-2.11.6.war[
https://gerrit-releases.storage.googleapis.com/gerrit-2.11.6.war]

There are no schema changes from link:ReleaseNotes-2.11.5.html[2.11.5].

Bug Fixes
---------

General
~~~~~~~

* link:https://code.google.com/p/gerrit/issues/detail?id=3742[Issue 3742]:
Use merge strategy for mergeability testing on 'Rebase if Necessary' strategy.
+
When pushing several interdependent commits to a project with the
'Rebase if Necessary' strategy, all the commits except the first one were
marked as 'Cannot merge'.

* link:https://code.google.com/p/gerrit/issues/detail?id=3762[Issue 3762]:
Fix server error when querying changes with the `query` ssh command.

* Fix server error when listing annotated/signed tag that has no tagger info.

* link:https://code.google.com/p/gerrit/issues/detail?id=3698[Issue 3698]:
Fix creation of the administrator user on databases with pre-allocated
auto-increment column values.
+
When using a database configuration where auto-increment column values are
pre-allocated, it was possible that the 'Administrators' group was created
with an ID other than `1`. In this case, the created admin user was not added
to the correct group, and did not have the correct admin permissions.

* link:https://code.google.com/p/gerrit/issues/detail?id=3018[Issue 3018]:
Fix query for changes using a label with a group operator.
+
The `group` operator was being ignored when searching for changes with labels
because the search index does not contain group information.

* Fix online reindexing of changes that don't already exist in the index.
+
Changes are now always reloaded from the database during online reindex.

* Fix reviewer suggestion for accounts containing upper case letters.
+
When an email for an account contained upper-case letter(s), this account
couldn't be added as a reviewer by selecting it from the suggested list of
accounts.

Authentication
~~~~~~~~~~~~~~

* Fix handling of lowercase HTTP username.
+
When `auth.userNameToLowerCase` is set to true the HTTP-provided username
should be converted to lowercase as it is done on all the other authentication
mechanisms.

* Don't create new account when claimed OAuth identity is unknown.
+
The Claimed Identity feature was enabled to support old Google OpenID accounts,
that cannot be activated anymore. In some corner cases, when for example the URL
is not from the production Gerrit site, for example on a staging instance, the
OpenID identity may deviate from the original one. In case of mismatch, the lookup
of the user for the claimed identity would fail, causing a new account to be
created.

UI
~~

* link:https://code.google.com/p/gerrit/issues/detail?id=3714[Issue 3714]:
Improve visibility of comments on dark themes.

* Fix highlighting of search results and trailing whitespaces in intraline
diff chunks.

Plugins
~~~~~~~

* link:https://code.google.com/p/gerrit/issues/detail?id=3768[Issue 3768]:
Fix usage of `EqualsFilePredicate` in plugins.

* Suggest to upgrade installed plugins per default during site initialization
to new Gerrit version.
+
The default was 'No' which resulted in some sites not upgrading core
plugins and running the wrong versions.

* Replication

** Recursively include parent groups of groups specified in `authGroup`.
+
An `authGroup` could be included in other groups and should be granted the
same permission as its parents.

** Put back erroneously removed documentation of `remote.NAME.timeout`.

** Add logging of cancelled replication events.

* API

** Allow to use `CurrentSchemaVersion`.

** Allow to use `InternalChangeQuery.query()`.

** Allow to use `JdbcUtil.port()`.

** Allow to use GWTORM `Key` classes.

Documentation Updates
---------------------

* link:https://code.google.com/p/gerrit/issues/detail?id=412[Issue 412]:
Update documentation of `commentlink.match` regular expression to clarify
that the expression is applied to the rendered HTML.

* Remove warning about unstable change edit REST API endpoints.
+
These endpoints should be considered stable since version 2.11.

* Document that `ldap.groupBase` and `ldap.accountBase` are repeatable.

