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


Gerrit 2.10 is now available:

link:https://gerrit-releases.storage.googleapis.com/gerrit-2.10.war[
https://gerrit-releases.storage.googleapis.com/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
  java -jar gerrit.war reindex --recheck-mergeable -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.1.7 (or
a later 2.1.x version), and then to 2.10.x.  If you are upgrading from 2.2.x.x or
later, you may ignore this warning and upgrade directly to 2.10.x.

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


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
^^^^^^^


* 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

