Release notes for Gerrit 2.12.3
===============================

Gerrit 2.12.3 is now available:

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

Gerrit 2.12.3 includes the bug fixes done with
link:ReleaseNotes-2.11.8.html[Gerrit 2.11.8] and
link:ReleaseNotes-2.11.9.html[Gerrit 2.11.9]. These bug fixes are *not*
listed in these release notes.

Schema Upgrade
--------------

*WARNING:* There are no schema changes from link:ReleaseNotes-2.12.2.html[
2.12.2] but a manual schema upgrade is necessary when upgrading from 2.12.

When upgrading a site that is already running version 2.12, the `patch_sets`
table must be manually migrated using the `gerrit gsql` SSH command or the
`gqsl` site program.

For the default H2 database, execute the command:

----
  alter table patch_sets modify push_certficate clob;
----

For MySQL, execute the command:

----
  alter table patch_sets modify push_certficate text;
----

For PostgreSQL, execute the command:

----
  alter table patch_sets alter column push_certficate type text;
----

For other database types, execute the appropriate equivalent command.

Note that the misspelled `push_certficate` is the actual name of the
column.

When upgrading from a version earlier than 2.12, or from 2.12.1 or 2.12.2
having already done the migration, this manual step is not necessary and
should be omitted.


Bug Fixes
---------

* Fix SSL security issue in the SMTP email relay.
+
The hostname of the SSL socket was not verified. This made the read
from the socket insecure since without verifying the hostname it may
be link:https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf[vulnerable
to a man-in-the-middle attack].

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3895[Issue 3895]:
Fix failure to submit with 'Rebase if Necessary' after changes were reordered
with interactive rebase.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4052[Issue 4052]:
Fix failure to start server after upgrade from version 2.9.4.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3891[Issue 3891]:
Fix query with `label:` operator and zero value.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4112[Issue 4112]:
Fix failure to submit changes caused by empty user edit ref.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4087[Issue 4087]:
Fix failure to submit change when a branch is created on the change ref.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4155[Issue 4155]:
Fix tags REST API to correctly return all tags.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4154[Issue 4154]:
Add support for `.team` and several more TLDs in email address validation.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4163[Issue 4163]:
Prevent removal of non-voting reviewers on submit of change.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=2647[Issue 2647]:
Fix usage of `CTRL-C` on change screen.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4236[Issue 4236]:
Fix internal error when pushing an amended commit with the `%edit` option.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=3426[Issue 3426]:
Fix pushing changes with `%base` option or `newChangeForAllNotInTarget` option.

* Show 'Submitted Together' tab for changes with same topic.

* Improve submit button tooltip messages shown when change is not submittable.

* Fix firing of the `topic-changed` hook.

* Remove `--dry-run` option from the `Reindex` site program.
+
The implementation of the option was removed, but the option was mistakenly
added back to the command and did not actually work.

* Print proper task names in the output of the `show-queues` command.

* Replication plugin: Double check if a ref is missing locally before deleting
from remote.

* Show an error message when trying to add a non-existent group to an ACL.

Updates
-------

* Update commons-validator to 1.5.1.
