Release notes for Gerrit 2.8.5
==============================

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

Schema Changes and Upgrades
---------------------------


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

* SSHD is updated to version 0.11.0.
+
See the 'ssh' section of 'Bug Fixes' below for details.

* Bouncycastle is updated to version 1.49.
+
*WARNING:* Gerrit is not shipped with Bouncycastle included. To get the
updated library files, the site must be updated:
+
----
  java -jar gerrit.war init -d site_path
----

Bug Fixes
---------


Secondary Index
~~~~~~~~~~~~~~~


* Fix deadlocks on index shutdown.


Change Screen
~~~~~~~~~~~~~


* Only permit current patch set to edit the commit message.
+
Do not allow users to replace a more recent patch set with an older
patch set when there is a race between the web UI and the command
line git client.

* Prevent draft changes from being abandoned.
+
When a draft change was abandoned it was published to all
users by setting the status to ABANDONED.  Restoring the change
effectively published the change, as the status was set to NEW.

* Don't show the submit button for draft patch sets.
+
The button was enabled for all open changes, but if the patch set
was a draft, pressing it resulted in an error.

* Only reset the commit message text on cancel.
+
Allow the user to begin editing the commit message, dismiss the
box by clicking outside of it (e.g. to copy part of a file name
from the Files table), and then re-open the current draft text
without resetting the box.
+
Only reset the box when the user explicitly clicks Cancel.

* Fix failure to load side-by-side diff due to "ISE EditIterator out of bounds"
error.

ssh
~~~

* Upgrade SSHD to version 0.11.0.
+
Fixes link:https://code.google.com/p/gerrit/issues/detail?id=2406[Issue 2406]:
"git clone" hangs after 100% resolving deltas with git over SSH.
+
Fixes a number of other issues including a
link:https://issues.apache.org/jira/browse/SSHD-307[null pointer exception]
that could cause ssh commands to hang.

* Upgrade bouncycastle to version 1.49.
+
Required by the SSHD upgrade.

* Re-enable nio2 backend.
+
The nio2 backend was disabled in Gerrit version 2.8.4 because of a
link:https://issues.apache.org/jira/browse/SSHD-252[bug in SSHD].  That bug
was fixed in SSHD version 0.10.0, so now we can re-enable nio2.

Misc
~~~~


* Keep old timestamps during data migration.
+
Migrating the change database through schema 77, which was introduced in
Gerrit 2.6, was causing patch set approval timestamps to be changed.

* link:https://code.google.com/p/gerrit/issues/detail?id=2607[Issue 2607]:
Fix incorrect "commit already exists (in the project)" error.

* link:https://code.google.com/p/gerrit/issues/detail?id=2569[Issue 2569]:
Enable automatic close changes on `refs/meta/config`.
+
Changes pushed for review on `refs/meta/config` and then force pushed
into the repository were not being automatically closed.

* Do not refresh group list if filter did not change.
+
The group list was being refreshed on every key event even if the
filter did not change, e.g. moving the cursor inside the text entry was
causing the list to update unnecessarily.

* Paginate the group list screen.
+
The group list screen now uses pagination. The number of groups displayed is
determined by the 'Maximum Page Size' user preference.
+
Option 'S' is added to the groups REST API to support query offset.

