Release notes for Gerrit 2.10
=============================


Gerrit 2.10 is now available:

link:https://www.gerritcodereview.com/download/gerrit-2.10.war[
https://www.gerritcodereview.com/download/gerrit-2.10.war]

Gerrit 2.10 includes the bug fixes done with
link:ReleaseNotes-2.9.1.html[Gerrit 2.9.1],
link:ReleaseNotes-2.9.2.html[Gerrit 2.9.2],
link:ReleaseNotes-2.9.3.html[Gerrit 2.9.3] and
link:ReleaseNotes-2.9.4.html[Gerrit 2.9.4].
These bug fixes are *not* listed in these release notes.

Important Notes
---------------


*WARNING:* This release contains schema changes.  To upgrade:
----
  java -jar gerrit.war init -d site_path
----

*WARNING:* When upgrading from an existing site that was initialized with Gerrit
version 2.6 to version 2.9.1, the primary key column order will be updated for
some tables. It is therefore important to upgrade the site with the `init` program,
rather than only copying the .war file over the existing one.

It is recommended to run the `init` program in interactive mode. Warnings will
be suppressed in batch mode.

*WARNING:* Upgrading to 2.10.x requires the server be first upgraded to 2.8
(or 2.9) and then to 2.10.x. If you are upgrading from 2.8.x or
later, you may ignore this warning and upgrade directly to 2.10.x.

*WARNING:* The `auth.allowGoogleAccountUpgrade` setting is no longer supported.

*WARNING:* When upgrading from version 2.8.4 or older with a site that uses
Bouncy Castle Crypto, new versions of the libraries will be downloaded. The old
libraries should be manually removed from site's `lib` folder to prevent the
startup failure described in
link:https://code.google.com/p/gerrit/issues/detail?id=3084[Issue 3084].


Release Highlights
------------------


* Support for externally loaded plugins.
+
Plugins can be implemented in Scala or Groovy using the
link:https://gerrit-review.googlesource.com/\#/admin/projects/plugins/scripting/groovy-provider[
Groovy provider] and
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/scala-provider[
Scala provider] plugins.

* Customizable 'My' menu.
+
Users can customize the contents of the 'My' menu in the top menu.  Administrators
can configure the default contents of the menu.


New Features
------------


Web UI
~~~~~~


Global
^^^^^^

* Add 'All-Users' project to store meta data for all users.

* Administrators can customize the default contents of the 'My' menu.

* Add 'My' > 'Groups' menu entry that shows the list of own groups.

* Allow UiActions to perform redirects without JavaScript.


Change Screen
^^^^^^^^^^^^^


* Display avatar for author, committer, and change owner.

* Remove message box when editing topic of change.

* link:https://code.google.com/p/gerrit/issues/detail?id=2573[Issue 2573]:
Add option to quickly add current user as reviewer of a change.
+
An 'Add Me' button is displayed next to the 'Add' button when searching for
reviewers to add to a change. This allows users to quickly add themselves as a
reviewer on the change without having to type their name in the search
box.

* Link project name to dashboard.

* link:https://code.google.com/p/gerrit/issues/detail?id=2667[Issue 2667]:
Allow to customize Submit button label and tooltip.


Side-by-Side Diff Screen
^^^^^^^^^^^^^^^^^^^^^^^^

* Allow the user to select the syntax highlighter.

* Add `Shift-a` keybinding to show/hide left side.

* Allow to toggle empty pane for added and deleted files.

* Add syntax highlighting of the commit message.


Change List / Dashboards
^^^^^^^^^^^^^^^^^^^^^^^^

* Remove age operator when drilling down from a dashboard to a query.

* link:https://code.google.com/p/gerrit/issues/detail?id=2646[Issue 2646]:
Add option to show Change-ID in the change table.

* Make the own user dashboard available under '/dashboard/self'.

* Add 'R' key binding to refresh custom dashboards.
+
Account dashboards, search results and the change screen refresh their content
when 'R' is pressed.  The same binding is added for custom dashboards.


Project Screens
^^^^^^^^^^^^^^^

* link:https://code.google.com/p/gerrit/issues/detail?id=2751[Issue 2751]:
Add support for filtering by regex in project list screen.

* Disable content merge option if project's merge strategy is fast forward only.

* Add branch actions to 'Projects > Branches' view.

User Preferences
^^^^^^^^^^^^^^^^


* Users can customize the contents of the 'My' menu from the preferences
screen.

* link:http://code.google.com/p/gerrit/issues/detail?id=2628[Issue 2628]:
Replace 'Display name in review category' preference with a list of options.
+
Including new options 'Show Abbreviated Name' to display abbreviated reviewer
names and 'Show Username' to show usernames in the change list.


Secondary Index / Search
~~~~~~~~~~~~~~~~~~~~~~~~


* Allow to search projects by prefix.

* Add search fields for number of changed lines.

* Add suggestions for 'is:pending' and 'status:pending'.

* Add 'pending' as alias for 'open'.

* link:http://code.google.com/p/gerrit/issues/detail?id=2545[Issue 2545]:
Support `topic:""` to find changes with no topic.

* Search more fields in the default search query.
+
If a search is given with only a text, search over a variety of fields
rather than just the project name.


ssh
~~~


* Expose SSHD backend in
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/cmd-show-connections.html[
`show connections`] SSH command.

* Add support for JCE (Java Cryptography Extension) ciphers.

REST API
~~~~~~~~


General
^^^^^^^


* Remove `kind` attribute from REST containers.

* Support `AcceptsPost` on non top-level REST collections.

* Accept `HEAD` in RestApiServlet.

Accounts
^^^^^^^^


* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-accounts.html#get-user-preferences[
Get user preferences].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-accounts.html#set-user-preferences[
Set user preferences].

Changes
^^^^^^^


* link:https://code.google.com/p/gerrit/issues/detail?id=2338[Issue 2338]:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#create-change[
Create change].

* Add `other-branches` option on
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-mergeable[
Get mergeable] endpoint.
+
If the `other-branches` option is specified, the mergeability will also be
checked for all other branches.

Config
^^^^^^


* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#list-tasks[
List tasks].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#get-task[
Get task].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#delete-task[
Delete task].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#list-caches[
List caches].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-cache[
Flush cache].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-several-caches[
Flush several caches].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-all-caches[
Flush all caches].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#get-summary[
Get server summary].

Projects
^^^^^^^^


* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#ban-commit[
Ban commits].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-content[
Get the content of a file from a certain commit].

* link:https://code.google.com/p/gerrit/issues/detail?id=2604[Issue 2604]:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-commit[
Get an arbitrary commit from a project].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-reflog[
Get the reflog of a branch].

* Add option 'S' to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#list-projects[
list projects endpoint] to support query offset.


Daemon
~~~~~~


* Add change subject to output of change URL on push.

* Indicate trivial rebase and commit message update on push.

* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/user-upload.html#review_labels[
adding review labels on changes] during git push.

* link:https://code.google.com/p/gerrit/issues/detail?id=2634[Issue 2634]:
Add change kind to PatchSetCreatedEvent.


Configuration
~~~~~~~~~~~~~

* Use
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#core.useRecursiveMerge[
recursive merge] by default.

* Allow to configure the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#download.archive[
available download archive formats].

* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/database-setup.html#createdb_maxdb[
SAP MaxDB].

* link:https://code.google.com/p/gerrit/issues/detail?id=2041[Issue 2041]:
Allow
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-labels.html#label_defaultValue[
configuration of a default value for a label].

* Allow projects to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-project-config.html#mimetype-section[
configure MIME types for files].

* Allow to configure
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#gc[
periodic garbage collection of all projects].

* Remove `auth.allowGoogleAccountUpgrade` setting.
+
It's been more than 5 years since Gerrit ran on Google AppEngine.  It is assumed
that everyone has upgraded their installations to a modern 2.x based server, and
will not need to have this upgrade path enabled.

* link:https://code.google.com/p/gerrit/issues/detail?id=2618[Issue 2618]:
Remove `label.Label-Name.abbreviation` setting.
+
The setting was no longer used, so it has been removed.

* New `httpd.registerMBeans` setting.
+
The
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#httpd.registerMBeans[
`httpd.registerMBeans` setting] allows to enable (or disable) registration of
Jetty MBeans for Java JMX.

* link:https://code.google.com/p/gerrit/issues/detail?id=2600[Issue 2600]:
Add documentation of how to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/install-j2ee.html#tomcat[
configure Tomcat] to allow embedded slashes.


Misc
~~~~

* Don't allow empty user name and passwords in InternalAuthBackend.

* link:https://code.google.com/p/gerrit/issues/detail?id=2596[Issue 2596]:
Add change-owner parameter to gerrit hooks.


Plugins
~~~~~~~

* Support for externally loaded plugins.
+
Plugins can be implemented in Scala or Groovy using the
link:https://gerrit-review.googlesource.com/\#/admin/projects/plugins/scripting/groovy-provider[
Groovy provider] and
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/scala-provider[
Scala provider] plugins.

* Allow plugins to replace the WebSession implementation.
+
Plugins can replace the existing implementation with the statement:
`DynamicItem.bind(binder(), WebSession.class).to(...);`
in a module designated as a `<Gerrit-HttpModule>` in the manifest.
+
Just the Cache implementation used for web sessions can be changed
by binding to a subclass of the now abstract `CacheBasedWebSession`
which supplies the Cache in the superclass constructor.
+
This is a step towards solving web session issues with multi-master.
+
The link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/websession-flatfile[
websession-flatfile plugin] replaces the built-in Gerrit WebSession implementation
with one that uses a flat file based cache.

* Allow http and ssh plugins to replace the Gerrit-provided DynamicItem.

* New extension point to listen to usage data published events.
+
Plugins implementing the `UsageDataPublishedListener` can listen to
events published about usage data.

* New extension point to link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/dev-plugins.html#pre-upload-hook[
register JGit PreUploadHook].
+
Plugins may register PreUploadHook instances in order to get
notified when JGit is about to upload a pack. This may be useful
for those plugins which would like to monitor usage in Git
repositories.

* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-validation.html#pre-upload-validation[
pre-upload validation extension point].
+
Plugins implementing the `UploadValidationListener` interface can
perform additional validation checks before any upload operations
(clone, fetch, pull). The validation is executed right before Gerrit
begins to send a pack back to the git client.

* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/dev-plugins.html#links-to-external-tools[
external tool links extension points].
+
Plugins can now contribute project links that will be displayed on the project
list screen in the 'Repository Browser' column, and revision links that will be
shown on the change screen.

* Allow creation of persistent caches after server is started.
+
This enables plugins to create own persistent caches when they are
installed.

* Make gerrit's HttpServletRequest and HttpServletResponse visible to http
plugins.

* New extensions in the Java Plugin API:

** Query changes
** Create/get/list projects
** Get/set review status
** Create change
** Get account
** Star/unstar changes
** Check if revision needs rebase

Bug Fixes
---------

General
~~~~~~~

* Use fixed rate instead of fixed delay for log file compression.
+
Log file compression was scheduled using a fixed delay. This caused the start
times to drift over time. Use a fixed rate instead so that the compression
reoccurs at the same time every day.

* Don't email project watchers on new draft changes.
+
If a draft change is created by pushing to `refs/drafts/master`, only the reviewers
explicitly named on the command line (which may be empty) should be notified of
the change. Users watching the project should not be notified, as the change has
not yet been published.

* Fix resource exhaustion due to unclosed LDAP connection.
+
When `auth.type` is set to `LDAP` (not `LDAP_BIND`), two LDAP connections are
made, but one was not being closed. This eventually caused resource exhaustion
and LDAP authentications failed.

Access Permissions
~~~~~~~~~~~~~~~~~~

* link:https://code.google.com/p/gerrit/issues/detail?id=2995[Issue 2995]:
Fix faulty behaviour in `BLOCK` permission.
+
`BLOCK` can be overruled with `ALLOW` on the same project, however there was a
bug when a child of the above project duplicates the `ALLOW` permission. In this
case the `BLOCK` would always win for the child, even though the `BLOCK` was
overruled in the parent.

Web UI
~~~~~~

General
^^^^^^^

* link:https://code.google.com/p/gerrit/issues/detail?id=2595[Issue 2595]:
Make gitweb redirect to login.
+
Gitweb redirects to the login page if the user isn't currently logged.

* link:https://code.google.com/p/gerrit/issues/detail?id=2631[Issue 2631]:
Re-arrange info at footer of Gerrit web UI pages.
+
Move the Gerrit info link so that there are no links close to the next page link.

* Only create All-Projects ACL once.
+
If `refs/meta/config` already existed it was overwritten with default configuration
if a site administrator ran `java -war gerrit.war init -d /some/existing/site --batch`.


Change Screen
^^^^^^^^^^^^^

* Don't linkify trailing dot or comma in messages.
+
As linkifying trailing dots and trailing commas does more harm than
good, we only treat dots and commas as being part of urls, if they are
neither followed by whitespace nor occur at the end of a string.

* Re-enable the 'Cherry Pick' button after canceling the dialog.
+
If the dialog was canceled, the button remained disabled and could not be
used again.

* Improve message when removing a reviewer.

* link:http://code.google.com/p/gerrit/issues/detail?id=527[Issue 527]:
Preserve line breaks in inline and review comments.

* Always show 'No Score' as label help for zero votings.

* Only reset the edited commit message text on cancel.

* Only include message on quick approve if reply is open.

* List reviewers with dummy approvals on closed changes.

* link:http://code.google.com/p/gerrit/issues/detail?id=2890[Issue 2890]:
Enable scrollbars for "Edit Commit Message" TextArea.

* Use current time instead of submitter time for cherry-picked commits.
+
Cherry picking with the submitter time could cause massive clock skew
in the Git commit graph if the server was shutdown before the submit could
finish, and restarted hours later.

* Fix exception when clicking on a binary file without being signed in.


Side-By-Side Diff
^^^^^^^^^^^^^^^^^

* link:https://code.google.com/p/gerrit/issues/detail?id=2970[Issue 2970]:
Fix misalignment of side A and side B for long insertion/deletion blocks.

* Give B side full width when A side is hidden.

* Fix scroll alignment when showing hidden A side.

* Bind Shift-N to search-prev in vim mode.

* Allow text selection in diff header.

* Display diff header on mode changes and renames.

* Document Shift-{Left,Right} in `?` help popup.

* Show `[` and `]` shortcut keys in nav arrow tooltips.

* Disable "Render = Slow" mode on files over 4000 lines.

* Keep keyboard bindings alive after click in padding.

* Jump to the first change on either side.

* Expand margin between paragraphs in comments.

* Include content on identical files with mode change.


User Settings
^^^^^^^^^^^^^

* Avoid loading all SSH keys when adding a new one.


Secondary Index / Search
~~~~~~~~~~~~~~~~~~~~~~~~


* Omit corrupt changes from search results.

* Allow illegal label names from default search predicate.

REST
~~~~

General
^^^^^^^

* Fix REST API responses for 3xx and 4xx classes.

Changes
^^^^^^^

* Fix inconsistent behaviour in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#add-reviewer[
add reviewer endpoint]
+
When adding a single reviewer to a change, it was possible to use the endpoint
to add a user who had no visibility to the change or whose account was invalid.


Changes
^^^^^^^

* link:https://code.google.com/p/gerrit/issues/detail?id=2583[Issue 2583]:
Reject inline comments on files that do not exist in the patch set.

* Allow forcing mergeability check on
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-mergeable[
Get mergeable].

* link:https://code.google.com/p/gerrit/issues/detail?id=2622[Issue 2622]:
Respect patch set visibility for messages.
+
Messages retrieval didn't check for patch set visbility and thus messages for
draft patch sets were returned back to the client.

* link:https://code.google.com/p/gerrit/issues/detail?id=2782[Issue 2782]:
Add missing documentation of the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-related-changes[
Get Related Changes] endpoint.

* link:https://code.google.com/p/gerrit/issues/detail?id=2723[Issue 2723]:
Clarify the response info in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-change-detail[
Get Change Detail] endpoint.

* link:https://code.google.com/p/gerrit/issues/detail?id=2693[Issue 2693]:
Clarify the response info in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#list-comments[
List Comments] endpoint.

SSH
~~~


* Prevent double authentication for the same public key.
+
This is a workaround for link:https://issues.apache.org/jira/browse/SSHD-300[
SSHD-300].

* Let `kill` SSH command only kill tasks that are visible to the caller.

* Require 'Administrate Server' capability to see server summary output from
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/cmd-show-caches.html[
`show-caches`] command.

* Include all command arguments in SSH log entry.
+
The SSH log only included the first argument. This prevented the repository name
from being logged when `git receive-pack` was executed instead of `git-receive-pack`.


Daemon
~~~~~~


* link:https://code.google.com/p/gerrit/issues/detail?id=2284[Issue 2284]:
More detailed error message when failing to upload new change.
+
When the uploaded change cannot be created on the underlying Git repository, a
more descriptive error message is displayed on both client and server side. This
allows to troubleshoot internal errors (e.g. JGit lock failures or other causes)
and help out in the resolution.

* Enforce HTTP password checking on gitBasicAuth.

* Fix missing commit messages on submodule direct pushes.
+
The commit message in superproject was missing on submodule's
directly pushed changes.


Plugins
~~~~~~~

General
^^^^^^^


* link:https://code.google.com/p/gerrit/issues/detail?id=2895[Issue 2895]:
Fix reload of plugins that use DynamicItem.

* Invoke `StartPluginListener` and `ReloadPluginListener` only after start/reload
is fully done.

* Set `Last-Modified` on cached Documentation resources.

* Return HTTP 304 for not modified SmallResources.

* Fix ChangeListener auto-registered implementations.

Replication
^^^^^^^^^^^


* Move replication logs into a separate file.

* Promote replication scheduled logs to info.

* Show replication ID in the log and in show-queue command.


Upgrades
--------


* Update Guava to 17.0

* Update Guice to 4.0-beta5

* Update GWT to 2.6.1

* Update httpclient to 4.3.4

* Update httpcore to 4.3.2

* Update Jcraft SSH to 0.1.51

* Update Jetty to 9.2

* Update JGit to 3.6.2.201501210735-r

* Update log4j to 1.2.17

* Update Servlet API to 8.0.5

* Update slf4j to 1.7.7

* Update Velocity to 1.7

