blob: c026914e48b71cb3f7ba8adf2343b72952156978 [file] [log] [blame]
= Release notes for Gerrit 2.9
Gerrit 2.9 is now available:
link:https://www.gerritcodereview.com/download/gerrit-2.9.war[
https://www.gerritcodereview.com/download/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],
link:ReleaseNotes-2.8.5.html[Gerrit 2.8.5],
link:ReleaseNotes-2.8.6.html[Gerrit 2.8.6] and
link:ReleaseNotes-2.8.6.1.html[Gerrit 2.8.6.1].
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:* 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.
*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].
*WARNING:* Support for query via the SQL index is removed. The usage of
a secondary index is now mandatory.
*WARNING:* The `sortkey` and `sortkey_prev` options on the query changes
REST endpoint are link:#sortkey-deprecation[deprecated].
*WARNING:* The new change screen only displays download commands if the
`download-commands` core plugin or any other plugin providing download
commands is installed. The `download-commands` plugin provides the
standard download schemes and commands. It is packaged together with
Gerrit and can be installed, or upgraded, during the
link:https://gerrit-review.googlesource.com/Documentation/pgm-init.html[
site initialization]:
.Installing the plugin for the first time
- Batch init:
+
By default the batch init does *not* install any core plugin. To
install the `download-commands` plugin during batch init, specify the
'--install-plugin download-commands' option:
+
----
$ java -jar gerrit-2.9.war init -d site --batch --install-plugin download-commands
----
- Interactive init:
+
There is a question whether the `download-commands` plugin should be
installed. To install the plugin the question must be answered with `y`:
+
----
Install plugin download-commands version v2.9 [y/N]? y
----
.Upgrading the plugin
Pay attention that the `download-commands` plugin from Gerrit 2.8 is
*not* compatible with Gerrit 2.9 and must be upgraded:
- Batch init:
+
With the batch init it is *not* possible to upgrade core plugins.
- Interactive init:
+
The interactive init asks whether the plugin should be upgraded:
+
----
Install plugin download-commands version v2.9 [y/N]? y
version v2.8.6.1 is already installed, overwrite it [y/N]? y
----
- Manual upgrade:
+
The plugin can be upgraded manually by copying the new plugin jar into
the site's `plugins` folder.
== Release Highlights
* link:http://code.google.com/p/gerrit/issues/detail?id=2065[Issue 2065]:
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
=== Web UI
==== Global
* Project links by default link to the project dashboard.
==== New Change Screen
* The new change screen is now the default change screen.
* The layout was changed so that the focus is now on the commit
message, the change ID and the change status.
* Draft comments are displayed in the reply box.
+
There are links to navigate to the inline comments which can be used if
a comment needs to be edited.
* New inline comments from other users, that were published after the
current user last reviewed this change, are highlighted in bold.
* New summary comments from other users, that were published after the
current user last reviewed this change, are automatically expanded in
the change history.
+
The support for the old comment visibility strategy is discontinued.
* link:http://code.google.com/p/gerrit/issues/detail?id=93[Issue 93]:
Inline comments are shown in the change history.
* link:http://code.google.com/p/gerrit/issues/detail?id=592[Issue 592]:
A reply icon is shown on each change message.
* Quoting is possible when replying to a comment.
* link:http://code.google.com/p/gerrit/issues/detail?id=2313[Issue 2313]:
Show whether a related change is merged or old.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/user-review-ui.html#related-changes[
Related Changes] tabs:
** `Cherry-Picks`
** `Same Topic`
** `Conflicts With`
* The title of the `Patch Sets` drop-down panel shows the number of the
currently viewed patch set and the total number of patch sets, in the
form: "current patch set/number of patch sets".
* The currently viewed patch set is displayed in the `Patch Sets` title.
* Keyboard shortcuts to navigate to next/previous patch set.
* Support `[`, `/` and `]` keys to navigate between files in a cycle.
* link:http://code.google.com/p/gerrit/issues/detail?id=2078[Issue 2078]:
Show a tooltip on reviewers indicating on which labels they can vote.
* The `Submit` button is enabled even if the change is not mergeable.
+
This allows to do the conflict resolution for a change series in a
single merge commit and submit the changes in reverse order.
* New `Open All` button in files header.
* If a merge commit is viewed this is highlighted by an icon. In this
case the parent commits are also shown.
* link:http://code.google.com/p/gerrit/issues/detail?id=2191[Issue 2191]:
New copy-to-clipboard button for commit ID.
==== New Side-by-Side Diff Screen
* link:http://code.google.com/p/gerrit/issues/detail?id=348[Issue 348]:
The lines of a patch file are linkable.
+
These links can be used to directly link to certain inline comments.
* link:http://code.google.com/p/gerrit/issues/detail?id=2395[Issue 2395]:
The line length preference is used to draw a margin line at that many
columns of text.
+
This allows a user to configure their preferred width (e.g. 80 columns
or 100 columns) and see the margin, making it easier to identify lines
that run over that width.
* link:http://code.google.com/p/gerrit/issues/detail?id=2530[Issue 2530]:
All diff preferences are honored.
* link:http://code.google.com/p/gerrit/issues/detail?id=148[Issue 148]:
The full file path is shown.
==== Change List / Dashboards
* The `Status` column shows `Merge Conflict` for changes that are not
mergeable.
* A new `Size` column shows the change size as a colored bar.
** The user preference `Show Change Sizes As Colored Bars In Changes Table`
can be disabled to get the size information displayed as text.
** The number of changed lines by which a change is considered as a
large change can be
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/config-gerrit.html#change.largeChange[
configured].
* Support to drill down into dashboard section.
+
Clicking on the section title executes the query of this section
without the `limit` operator.
==== Project Screens
* The general project screen provides a copyable clone command that
automatically installs the `commit-msg` hook.
* link:http://code.google.com/p/gerrit/issues/detail?id=562[Issue 562]:
Project owners can change `HEAD` from the project branches screen.
* link:http://code.google.com/p/gerrit/issues/detail?id=1298[Issue 1298]:
Administrators can change the parent project from the project access
screen; other users can save changes to the parent project for review
and get the change approved by an administrator.
* The project list displays icons for projects that are read only or
hidden.
* The Git garbage collection can be triggered from the general project
screen if the user has the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/access-control.html#capability_runGC[
Run Garbage Collection] global capability.
==== User Preferences
* Users can choose the UK date format to render dates and timestamps in
the UI.
=== Secondary Index
* Support for query via the SQL index is removed. The usage of
a secondary index is now mandatory.
* 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.
* link:http://code.google.com/p/gerrit/issues/detail?id=1752[Issue 1752]:
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.
* link:http://code.google.com/p/gerrit/issues/detail?id=1156[Issue 1156]:
New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/cmd-create-branch.html[
create-branch] command.
=== REST API
==== Changes
[[sortkey-deprecation]]
* Results returned by the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9/rest-api-changes.html#list-changes[
query changes] endpoint are now paginated using offsets instead of sortkeys.
+
The `sortkey` and `sortkey_prev` parameters on the endpoint are deprecated. The
results are now paginated using the `--limit` (`-n`) option to limit the number
of results, and the `-S` option to set the start point.
+
Queries with sortkeys are still supported against old index versions, to enable
online reindexing while clients have an older JS version.
==== 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].
* link:http://code.google.com/p/gerrit/issues/detail?id=1993[Issue 1993]:
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
* 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.
* link:http://code.google.com/p/gerrit/issues/detail?id=2163[Issue 2163]:
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.
* link:http://code.google.com/p/gerrit/issues/detail?id=2162[Issue 2162]:
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:http://code.google.com/p/gerrit/issues/detail?id=2257[Issue 2257]:
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].
* link:http://code.google.com/p/gerrit/issues/detail?id=2318[Issue 2318]:
Allow the text of the "Report Bug" link to be configured.
=== Misc
* The removal of reviewers and their votes is recorded as a change
message.
* link:http://code.google.com/p/gerrit/issues/detail?id=2229[Issue 2229]:
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
=== Access Rights
* Fix possibility to overcome BLOCK permissions.
=== Web UI
* link:http://code.google.com/p/gerrit/issues/detail?id=2652[Issue 2652]:
Copy label approvals when cherry-picking change to same branch.
* link:http://code.google.com/p/gerrit/issues/detail?id=2662[Issue 2662]:
Limit file list in new change screen to files that were touched in new
patch set.
* link:http://code.google.com/p/gerrit/issues/detail?id=2308[Issue 2308]:
Show related changes in new change screen for merged changes if there
are open descendants.
* link:http://code.google.com/p/gerrit/issues/detail?id=2635[Issue 2635]:
Fix copying of download commands by 'Cmd-C' in Safari.
* link:http://code.google.com/p/gerrit/issues/detail?id=2178[Issue 2178]:
Fix background of reply box on new change screen getting transparent.
* link:http://code.google.com/p/gerrit/issues/detail?id=2362[Issue 2362]:
Show quick approve button only for current patch set.
* link:http://code.google.com/p/gerrit/issues/detail?id=2405[Issue 2405]:
Update `Patch Sets` drop-down panel when draft patch set is deleted.
* link:http://code.google.com/p/gerrit/issues/detail?id=2397[Issue 2397]:
Fix linkifying of topics that are set to a URL.
* link:http://code.google.com/p/gerrit/issues/detail?id=2151[Issue 2151]:
Fix overflowing of long lines in commit message block.
* link:http://code.google.com/p/gerrit/issues/detail?id=2401[Issue 2401]:
Fix truncated long lines in new side-by-side diff screen.
* link:http://code.google.com/p/gerrit/issues/detail?id=2225[Issue 2225]:
Display larger icons for Prev / Next and Up to Change links on new
side-by-side diff screen.
* link:http://code.google.com/p/gerrit/issues/detail?id=2340[Issue 2340]:
Fix selection in new side-by-side diff screen.
* link:http://code.google.com/p/gerrit/issues/detail?id=2409[Issue 2409]:
Show in new side-by-side diff screen updates of submodule links.
* link:http://code.google.com/p/gerrit/issues/detail?id=2481[Issue 2481]:
After showing a binary file in the unified diff screen switch back to
the side-by-side diff screen when the user navigates to the
next/previous file.
* link:http://code.google.com/p/gerrit/issues/detail?id=2417[Issue 2417]:
Respect base diff revision for files REST call.
* link:http://code.google.com/p/gerrit/issues/detail?id=2654[Issue 2654]:
Require the user to confirm setting the username.
+
Once the username has been set, it cannot be edited. This can cause
problems for users who accidentally set the wrong username. A
confirmation dialog now warns the user that setting the username is
permanent and the username is only set when the user confirms.
* link:https://code.google.com/p/gerrit/issues/detail?id=2635[Issue 2635]:
Fix copying from copyable label in Safari.
=== Secondary Index
* Fix Online Reindexing.
* Fix for full-text search with Lucene.
+
The full-text search was using a fuzzy query which used the edit
distance to find terms in the index close to the provided search term.
This produced bizarre results for queries like "message:1234".
+
Instead, use Lucene's QueryBuilder with an analyzer to convert a
full-text search word/phrase into a phrase query.
* link:http://code.google.com/p/gerrit/issues/detail?id=2281[Issue 2281]:
Reindex change after updating commit message.
=== REST
* link:http://code.google.com/p/gerrit/issues/detail?id=2568[Issue 2568]:
Update description file during `PUT /projects/{name}/config`.
=== SSH
* link:http://code.google.com/p/gerrit/issues/detail?id=2516[Issue 2516]:
Fix parsing of label name on `review` command.
* link:http://code.google.com/p/gerrit/issues/detail?id=2440[Issue 2440]:
Clarify for review command when `--verified` can be used.
=== Plugins
* link:http://code.google.com/p/gerrit/issues/detail?id=2551[Issue 2551]:
Handle absolute URLs in the top level menu.
* link:http://code.google.com/p/gerrit/issues/detail?id=2391[Issue 2391]:
Respect servlet context path in URL for top menu items.
=== Other
* link:http://code.google.com/p/gerrit/issues/detail?id=2382[Issue 2382]:
Clean left over data migration after removal of TrackingIds table.
== Upgrades
* Update JGit to 3.4.0.201405051725-m7
+
This upgrade fixes the MissingObjectExceptions in Gerrit that are
described in link:http://code.google.com/p/gerrit/issues/detail?id=2025[
issue 2025].
* Update gwtjsonrpc to 1.5
* Update gwtorm to 1.13
* Update guava to 16.0
* Update H2 to 1.3.174
+
This version includes a fix for an LOB deadlock between reading and
updating LOB columns. This could lead to a deadlock between web and SSH
clients as described in
link:http://code.google.com/p/gerrit/issues/detail?id=2365[issue 2365].
* 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.