blob: 1dd7da2a1b9acfa659170ee59ab07df6ccc6a4cd [file] [log] [blame]
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.
Gerrit 2.9 includes the bug fixes done with
link:ReleaseNotes-2.8.1.html[Gerrit 2.8.1],
link:ReleaseNotes-2.8.2.html[Gerrit 2.8.2],
link:ReleaseNotes-2.8.3.html[Gerrit 2.8.3],
link:ReleaseNotes-2.8.4.html[Gerrit 2.8.4], and
link:ReleaseNotes-2.8.5.html[Gerrit 2.8.5].
These bug fixes are *not* listed in these release notes.
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* Support for query via the SQL index is removed. The usage of
a secondary index is now mandatory.
*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
------------------
* The new change screen is now the default change screen.
+
The
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-review-ui.html[
documentation of the new review UI] describes the new screens in detail
and highlights the important functionality with screenshots.
+
Users that are accessing the new change screen for the first time are
informed about the new change screen by a welcome popup. The welcome
popup links to the review UI documentation and allows users to go back
to the old change screen.
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 `--notify` option on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-review.html[
review] command allowing to control when email notifications should be
sent.
* New `--branch` option on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-review.html[
review] command.
* New `--all-reviewers` option on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-query.html[
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.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-create-branch.html[
create-branch] command.
REST API
~~~~~~~~
Projects
^^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/rest-api-projects.html#get-content[
Get content of a file from HEAD of a branch].
Documentation
^^^^^^^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/rest-api-documentation.html#search-documentation.html[
Search documentation].
Access Rights
~~~~~~~~~~~~~
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/access-control.html#capability_viewAllAccounts[
global capability for viewing all accounts].
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/access-control.html#capability_viewPlugins[
global capability for viewing the list of installed plugins].
* New `Change Owner` group that allows to assign label permissions to the change owner.
* Support link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/access-control.html#category_submit_on_behalf_of[
on behalf of for submit].
* Allow service users to access REST API if `auth.gitBasicAuth = true`.
+
If link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#auth.gitBasicAuth[
auth.gitBasicAuth] is set to `true` in the `gerrit.config` file all
HTTP traffic is authenticated using standard `BasicAuth` and the
credentials are validated using the same auth method as configured for
the Gerrit Web UI. E.g. for LDAP this means that users must use their
LDAP password for Git over HTTP and for accessing the REST API.
+
Service users are technical users that were created by the
`create-account` SSH command. These users only exist in Gerrit and
hence they do not have any LDAP password. This is why service users
were not able to make use of the REST API if `auth.gitBasicAuth` was
set to `true`.
+
Now if `auth.gitBasicAuth` is set to `true` users that exist only in
Gerrit but not in LDAP are authenticated with their HTTP password from
the Gerrit database.
Search
~~~~~~
* Support for query via the SQL index is removed. The usage of
a secondary index is now mandatory.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#mergeable[
is:mergeable] search operator
+
Finds changes that have no merge conflicts and can be merged into the
destination branch.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#parentproject[
parentproject] search operator
+
Finds changes in the specified project or in one of its child projects.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#conflicts[
conflicts] search operator
+
Finds changes that conflict with the specified change.
* New operators for absolute last-updated-on search
** link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#before_until[
before / until]
** link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#after_since[
after / since]
* Support exact match on file parts in
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-search.html#file[
file] operator
* Query shortcuts
** `o` = `owner`
** `r` = `reviewer`
** `p` = `project`
** `f` = `file`
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.
Documentation
~~~~~~~~~~~~~
* The documentation is now
https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/rest-api-documentation.html#search-documentation.html[
searchable]:
+
On each documentation page there is search box in the right top corner
that allows to search in the documentation.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-review-ui.html[
Documentation of the new review UI]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/intro-project-owner.html[
New Project Owner Guide]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/index.html[
Newly structured documentation index]
Configuration
~~~~~~~~~~~~~
* New init step for installing the `Verified` label.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#repository.name.defaultSubmitType[
Default submit type] for newly created projects can be configured.
* `sshd_log` and `httpd_log` can use log4j configuration.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#change.allowDrafts[
Draft workflow can be disabled].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-project-config.html#receive.checkReceivedObjects[
Project configuration for checking of received objects].
Misc
~~~~
* The removal of reviewers and their votes is recorded as a change
message.
* The change URL is returned on push if the change is updated.
* The topic is included into merge commit messages if all merged
changes have the same topic.
* Stable CSS class names.
Plugins
~~~~~~~
* Plugin API to invoke the REST API.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#screen[
Plugins can add entire screens to Gerrit].
* Plugins can have a
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#settings-screen[
settings screen] which is linked from plugin list screen.
* Support to edit
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#simple-project-specific-configuration[
project plugin configuration parameters] in the UI.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#plugins.allowRemoteAdmin[
Remote plugin administration is by default disabled].
Extension Points
^^^^^^^^^^^^^^^^
* Extension point to provide a "Message Of The Day"
* Validation for
** link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-validation.html#new-project-validation[
project creation]
** link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-validation.html#new-group-validation[
group creation]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#init_step[
Init steps can do initialization after the site is created]
** The `All-Projects` `project.config` can be read and edited
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#receive-pack[
Initialization of ReceivePack]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#post-receive-hook[
Registration of PostReceiveHooks]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#root-level-commands[
Registration of root level commands]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/dev-plugins.html#multiple-commands[
Multiple SSH commands can be bound to the same class]
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#database.dataSourceInterceptorClass[
DataSource Interception]
JavaScript Plugins
^^^^^^^^^^^^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/js-api.html#self_on[
JavaScript Callbacks]
** Gerrit.on(\'history\', f)
** Gerrit.on(\'submitchange\', f)
** Gerrit.on(\'showchange\', f)
* `change_plugins` element on the new change screen that allows to
insert arbitrary HTML fragments from plugins
Bug Fixes
---------
Upgrades
--------
* Update JGit to 3.4.0.201405051725-m7
* Update gwtjsonrpc to 1.5
* Update gwtorm to 1.8
* Update guava to 16.0
* Update H2 to 1.3.174
* Update Jetty to 9.1.0.v20131115
* Update Servlet API to 3.1
* Update Lucene to 4.6.0
* Update GWT to 2.6.0
Plugins
-------
Replication
~~~~~~~~~~~
* Default push refSpec is changed to `refs/*:refs/*` (non-forced push)
+
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.
* Support replication of HEAD updates
* Stream events for ref replication
* Replications failed due to "failed to lock" errors are retried
* Configuration changes can be detected and replication is
automatically restarted
Issue Tracker System plugins
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*WARNING:* The `hooks-*` plugins (`plugins/hooks-bugzilla`,
`plugins/hooks-jira` and `plugins/hooks-rtc`) are deprecated with
Gerrit 2.9.
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 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.