= Release notes for Gerrit 2.12.1

Gerrit 2.12.1 is now available:

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

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

== Schema Upgrade

*WARNING:* This version includes a manual schema upgrade 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, this manual step is not
necessary and should be omitted.


== Bug Fixes

=== General

* Fix column type for signed push certificates.
+
The column type `VARCHAR(255)` was too small, preventing some PGP push
certificates from being stored.

* Add the `DRAFT_COMMENTS` option to the list changes REST API endpoint
and mark it as deprecated.
+
It was removed in version 2.12 because it's not needed any more by the UI,
but this caused failures for clients that still use it.
+
Now it is added back, although it does not do anything and is marked as
deprecated.

* link:https://code.google.com/p/gerrit/issues/detail?id=3669[Issue 3669]:
Fix schema migration when migrating to 2.12.x directly from a version
earlier than 2.11.

* link:https://code.google.com/p/gerrit/issues/detail?id=3733[Issue 3733]:
Correctly detect symlinked log directory on startup.
+
If `$site_path/logs` was a symlink, the server would not start.

* link:https://code.google.com/p/gerrit/issues/detail?id=3871[Issue 3871]:
Throw an explicit exception when failing to load a change from the database.
+
If a change could not be loaded from the database, for example if it was
manually removed from the changes table but references to it were remaining
in other tables, a null change was returned which would then lead to an
'Internal Server Error' that was difficult to track down. Now an error is
raised earlier which will help administrators to find the root cause.

* link:https://code.google.com/p/gerrit/issues/detail?id=3743[Issue 3743]:
Use submitter identity as committer when using 'Rebase if Necessary' merge
strategy.
+
When submitting a change that required rebase, the committer was being
set to 'Gerrit Code Review' instead of the name of the submitter.

* link:https://code.google.com/p/gerrit/issues/detail?id=3758[Issue 3758]:
Fix serving of static resources when deployed in application container.
+
When deployed in a container, for example Tomcat, it was not possible to
load the UI because static content could not be loaded from the WAR file.

* link:https://code.google.com/p/gerrit/issues/detail?id=3790[Issue 3790]:
When deployed in a container, for example Tomcat, the 'Documentation' menu
was missing.

* link:https://code.google.com/p/gerrit/issues/detail?id=3786[Issue 3786]:
Fix SQL statement syntax in schema migration.
+
An extra semicolon was preventing migration from 2.11.x to 2.12 when using
an Oracle database.

* Send email using email queue instead of the default queue.
+
Some emails sent asynchronously were already being sent using that queue
but some were not. This was confusing for a gerrit administrator because
if there is a build up of `send-email` tasks in the queue, he would
think that increasing `sendemail.threadPoolSize` would help but it did not
because some of the email were sent using the default queue which is
configurable using `execution.defaultThreadPoolSize`.

* Fix XSRF token cookie to honor `auth.cookieSecure` setting.

* link:https://code.google.com/p/gerrit/issues/detail?id=3767[Issue 3767]:
Fix replication of first patch set for new changes.
+
When new changes were pushed from the command line, the first patch
set did not get replicated to destinations.

* link:https://code.google.com/p/gerrit/issues/detail?id=3771[Issue 3771]:
Remove `index.defaultMaxClauseCount` configuration option.
+
When `index.maxTerms` was either not set (thus no limit) or set to a value
higher than `index.defaultMaxClauseCount` it was possible that viewing the
related changes tab could cause a 'Too many clauses' error for changes that
have a lot of related changes.
+
The `index.defaultMaxClauseCount` configuration option is removed, and the
existing `index.maxTerms` is reused. The default value of `index.maxTerms`
is reduced from 'no limit' to 1024.

* link:https://code.google.com/p/gerrit/issues/detail?id=3919[Issue 3919]:
Explicitly set parent project to 'All-Projects' when a project is created
without giving the parent.

* link:https://code.google.com/p/gerrit/issues/detail?id=3948[Issue 3948]:
Fix submit of project parent updates on `refs/meta/config`.
+
When submitting a change on `refs/meta/config` to update a project's parent,
the error 'The change must be submitted by a Gerrit administrator' was being
displayed even when the submitter was an admin. The submit was successful
when clicking 'Submit' a second time.

* link:https://code.google.com/p/gerrit/issues/detail?id=3811[Issue 3811]:
Fix submittability of merge commits that resolve merge conflicts.
+
If a series of changes contained a change that conflicted with the destination
branch, but the conflict was solved by a merge commit at the tip of the
series, the series was not submittable.

* link:https://code.google.com/p/gerrit/issues/detail?id=3883[Issue 3883]:
Respect the `core.commentchar` setting from `.gitconfig` in `commit-msg` hook.

=== UI

* link:https://code.google.com/p/gerrit/issues/detail?id=3894[Issue 3894]:
Fix display of 'Related changes' after change is rebased in web UI:

* link:https://code.google.com/p/gerrit/issues/detail?id=3071[Issue 3071]:
Fix display of submodule differences in side-by-side view.

* link:https://code.google.com/p/gerrit/issues/detail?id=3718[Issue 3718]:
Hide avatar images when no avatars are available.
+
The UI was showing a transparent empty image with a border.

* link:https://code.google.com/p/gerrit/issues/detail?id=3731[Issue 3731]:
Fix syntax higlighting of tcl files.

* link:https://code.google.com/p/gerrit/issues/detail?id=3863[Issue 3863]:
Fix display of active row marker in tag list.
+
Clicking on one of the rows would cause the tag name to disappear.

* link:https://code.google.com/p/gerrit/issues/detail?id=1207[Issue 1207]:
Fix keyboard shortcuts for non-US keyboards on side-by-side diff screen.
+
The forward/backward navigation keys `[` and `]` only worked on keyboards where
these characters could be typed without using any modifier key (like CTRL, ALT,
etc..).
+
Note that the problem still exists on the unified diff screen.

* Improve tooltip on 'Submit' button when 'Submit whole topic' is enabled
and the topic can't be submitted due to some changes not being ready.

=== Plugins

* link:https://code.google.com/p/gerrit/issues/detail?id=3821[Issue 3821]:
Fix repeated reloading of plugins when running on OpenJDK 8.
+
OpenJDK 8 uses nanotime precision for file modification time on systems that
are POSIX 2008 compatible. This leads to precision incompatibility when
comparing the plugin's JAR file timestamp, resulting in the plugin being
reloaded every minute.

* link:https://code.google.com/p/gerrit/issues/detail?id=3741[Issue 3741]:
Fix handling of merge validation exceptions emitted by plugins.
+
If a plugin raised an exception, it was reported to the user as 'Change is
new', rather than 'Missing dependency'.

* Allow plugins to get the caller in merge validation requests.
+
Plugins that implement the `MergeValidationListener` interface now get the
caller (the user who initiated the merge) in the `onPreMerge` method.
+
Existing plugins that implement this interface must be adapted to the new
method signature.

* link:https://code.google.com/p/gerrit/issues/detail?id=3892[Issue 3892]:
Allow plugins to suggest reviewers based on either change or project
resources.

=== Documentation

* Update documentation of `commentlink` to reflect changed search URL.

* Add missing documentation of valid `database.type` values.

== Upgrades

* Upgrade JGit to 4.1.2.201602141800-r.
