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.
