Release notes for Gerrit 2.9
============================


Gerrit 2.9 is now available:

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


*WARNING:* Support for Java 1.6 has been discontinued.
As of Gerrit 2.9, Java 1.7 is required.


Schema Change
-------------


*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:* Upgrading to 2.9.x requires the server be first upgraded to 2.1.7 (or
a later 2.1.x version), and then to 2.9.x.  If you are upgrading from 2.2.x.x or
later, you may ignore this warning and upgrade directly to 2.9.x.


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


* 'Gerrit Inspector' for interactive inspection and troubleshooting of a running
Gerrit instance.


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


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


* New `--recheck-mergeable` option on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/pgm-reindex.html[
`reindex` program].

ssh
~~~


* New `--all-reviewers` option on the `query` command allowing query results
to include information about all reviewers added on the change.

* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-apropos.html[
`apropos` command] to search the Gerrit documentation.

* Deprecated `@CommandMetaData(descr)` has been discontinued. As of Gerrit 2.9
  `@CommandMetaData(description)` annotation must be used.

REST API
~~~~~~~~


Documentation
^^^^^^^^^^^^^


* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/rest-api-documentation#search-documentation.html[
Search documentation].

Daemon
~~~~~~


* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-inspector.html[
Gerrit Inspector]: interactive Jython shell.
+
New `-s` option is added to the Daemon to start an interactive Jython shell for inspection and
troubleshooting of live data of the Gerrit instance.

Plugins
~~~~~~~


Issue Tracker System plugins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^


*WARNING:* There are new plugins for the integration with Bugzilla,
Jira and IBM Rational Team Concert:

* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-bugzilla[plugins/its-bugzilla]
* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-jira[plugins/its-jira]
* link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-rtc[plugins/its-rtc]

The old plugins (`plugins/hooks-bugzilla`, `plugins/hooks-jira` and
`plugins/hooks-rtc`) are deprecated with Gerrit 2.9.

The new issue tracker system plugins have a common base which is
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/its-base[plugins/its-base].

The configuration of the new plugins is slightly different than the
configuration of the old plugins because they use different section
names in the Gerrit configuration. For easy migration the new plugins
have an init step that allows to take over the configuration from the
old plugins during the Gerrit initialization phase.

New Features:

* The issue tracker integration can be enabled/disabled per project.
* Parent projects can enforce the issue tracker integration for their
  child projects.
* It can be configured for which branches of a project the issue
  tracker integration is enabled.
* Whether the issue tracker integration is enabled/disabled for a
  project can be changed from the ProjectInfoScreen in the Gerrit
  WebUI.


Bug Fixes
---------


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


* The number of accounts shown on the 'Become Any Account' login
screen is increased from 5 to 100.

Upgrades
--------

* Update gwtjsonrpc to 1.4
* Update gwtorm to 1.8

Plugins
-------

Replication
~~~~~~~~~~~

* The default push refSpec for the replication plugin has changed from `forced`
to `non-forced` push (was `+refs/*:refs/*` and now is `refs/*:refs/*`). This change
should not impact typical replication topologies where the slaves are read-only
and can be pushed by their masters only. If you wanted explicitly to overwrite
all changes on the slaves, you need to add a `push=+refs/*:refs/*` configuration
entry for each replication target.
