blob: 1ca68258af009a0ce0f569d38caa468c9df137ce [file] [log] [blame]
= Release notes for Gerrit 2.11
Gerrit 2.11 is now available:
Gerrit 2.11 includes the bug fixes done with
link:ReleaseNotes-2.10.1.html[Gerrit 2.10.1],
link:ReleaseNotes-2.10.2.html[Gerrit 2.10.2] and
link:ReleaseNotes-2.10.3.html[Gerrit 2.10.3].
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
Gerrit 2.11 requires a secondary index, which can be created offline
by running the `reindex` program:
java -jar gerrit.war reindex -d site_path
If the site that is upgraded already has a secondary index, the
secondary index can be upgraded online. This is important for large
sites since running the `reindex` program can take a long time and
contributes significantly to the downtime that is required for the
Gerrit 2.11 supports online reindexing only from the index version `11`
which is the index version of Gerrit 2.10. This means if you come from
an older release it makes sense to first upgrade to 2.10 and then do
the upgrade to 2.11 so that you can profit from online reindexing.
In case you are upgrading from 2.10 it is *important* to check *before*
the upgrade to 2.11 that the index version of your Gerrit 2.10 site is
`11`. You can check the index version in
`$site_path/index/gerrit_index.config`. Your Gerrit 2.10 site may run
with an older index version (e.g. if online reindexing to index version
`11` is still running or if online reindexing to version `11` has
failed). In this case you first need to successfully migrate your index
version of your Gerrit 2.10 site to `11` and only then start with the
2.11 upgrade. If you start the 2.11 upgrade when the schema version of
your Gerrit 2.10 site is older than `11`, online reindexing is no longer
possible and you need to reindex offline by using the `reindex` program.
*WARNING:* Upgrading to 2.11.x requires the server be first upgraded to 2.8 (or
2.9) and then to 2.11.x. If you are upgrading from 2.8.x or later, you may ignore
this warning and upgrade directly to 2.11.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:[Issue 3084].
*WARNING:* The 'Generate HTTP Password' capability has been
*WARNING:* Google will
link:[shut down their OpenID
service on 20th April 2015]. Administrators of sites whose users are registered
with Google OpenID accounts should encourage the users to
add an alternative identity to their account] before this date. Users who do
not add an alternative identity before this date will need to create a new
account and ask the site administrator to
link:[merge it].
Edit Commit Message] REST API endpoint is removed
*WARNING:* The deprecated '/query' URL is removed and will now return `Not Found`.
== Release Highlights
* link:[Issue 505]:
Changes can be created and edited directly in the browser. See the
link:#inline-editing[Inline editing] section for more details.
* Many improvements in the new change screen.
* The old change screen is removed.
== New Features
=== Web UI
==== Inline Editing
Refer to the
inline editing user guide] for detailed instructions.
* New changes can be created directly in the browser via a 'Create Change'
button on the project info screen.
* New follow-up changes can be created via a 'Follow-Up' button on the change
* File content can be edited in a full screen CodeMirror editor with support for
themes and syntax highlighting.
* The CodeMirror screen can be configured in the same way as the side-by-side
diff screen.
* The file table in the change screen supports seamless navigation to the
CodeMirror editor.
* Edit mode can be started from the side-by-side diff screen with seamless
navigation to the CodeMirror editor.
* The commit message must now be changed in the context of a change edit. The
'Edit Message' button is removed from the change screen.
* Files can be added, deleted, restored and modified directly in browser.
==== Change Screen
* Remove the 'Edit Message' button from the change screen.
The commit message is now edited using the inline edit feature.
* Add support for changing parent revision with the 'Rebase' button.
Using the 'Rebase' button it is now possible to rebase a change onto a
different change (on the same destination branch), rather than only onto the
head of the destination branch or the latest patch set of the predecessor change.
* Show the parent commit's subject as a tooltip.
* link:[Issue 2541],
link:[Issue 2974]:
Allow the 'Reply' button's
label and tooltip] to be configured.
* Improve file sorting for C and C++ files.
Header files are now listed before implementation files.
* link:[Issue 3148]:
Allow display of colored size bars to be enabled or disabled per user.
The 'Show Change Sizes As Colored Bars In Changes Table' setting is renamed to
'Show Change Sizes As Colored Bars' and is now used to also control how the
change size is shown per file in the file table.
When enabled (which is the default), the change size per file is shown as a sum
of lines added/removed, and also representated by a colored bar showing the
proportion of added/removed lines.
When disabled, the colored bar is not shown and the change size per file is shown
in the same way as it used to be in the old change screen.
* Show changes across all projects and branches in the `Same Topic` tab.
==== Side-By-Side Diff
* New button to switch between side-by-side diff and unified diff.
* New preference setting to toggle auto-hiding of the diff table header.
The setting determines whether or not the diff table header with the patch set
selection should be automatically hidden when scrolling down more than half of
a page.
* Highlight search results on scrollbar.
Search results in vim mode are highlighted in the scrollbar with gold
colored annotations.
* Set line length to 72 characters for commit messages.
* Add syntax highlighting for several new modes:
** link:[Issue 2848]: CSharp
** Dart
** Dockerfile
** GLSL shader
** Go
** Objective C
** link:[Issue 2779]: reStructured text
** Soy
==== Projects Screen
* Add pagination and filtering on the branch list page.
* Add an 'Edit Config' button on the project info page.
The button creates a new change on the `refs/meta/config` branch and opens the
`project.config` file in the inline editor.
This allows project owners to easily edit the `project.config` file from the
browser, which is useful since it is possible that not all configuration options
are available in the UI.
=== REST
==== Accounts
* Add new link:[
Suggest Account endpoint].
==== Changes
* The link:[
Edit Commit Message] endpoint is removed in favor of the new
Change commit message in Change Edit] and
Publish Change Edit] endpoints.
* Add new
Check Change endpoint].
In the past, Gerrit bugs, lack of transactions, and unreliable NoSQL backends
have at various times produced a bewildering variety of corrupt states.
This endpoint can be used to detect, explain, and repair some of these possible
states of a change.
* Add new
Get Revision Actions endpoint].
* Add
`CHANGE_ACTIONS`] option on the
Get Change Detail] endpoint.
==== Change Edits
Several new endpoints are added to support the inline edit feature.
* link:[
Get Edit Detail].
* link:[
Change file content in Change Edit].
* link:[
Restore file content in Change Edit].
* link:[
Change commit message in Change Edit].
* link:[
Delete file in Change Edit].
* link:[
Retrieve file content from Change Edit].
* link:[
Retrieve commit message from Change Edit or current patch set of the change].
* link:[
Publish Change Edit].
* link:[
Rebase Change Edit].
* link:[
Delete Change Edit].
==== Projects
* Add new
Delete Branches] endpoint.
* Add filtering and pagination options on the
List Branches] endpoint.
* Add new
List Tags] endpoint.
* Add new
Get Tag] endpoint.
=== Configuration
* Add support for
HTTP external ID header].
This can be used when authenticating with a federated identity token from
an external system, e.g. GitHub's OAuth 2.0 authentication.
* Add
`copyAllScoresIfNoChange`] setting for labels.
Allows to copy scores forward when a new patch set is uploaded that has the same
parent tree, code delta, and commit message as the previous patch set.
* link:[Issue 2786]:
Allow non-administrators to modify user accounts.
A new global capability,
'Modify Account'], which allows the granted group members to modify user account
settings via the
`set-account` SSH command].
Modification of users' SSH keys is still restricted to administrators.
* Add support for
LDAP connection pooling].
* link:[Issue 699]: Allow to
limit max number of changes pushed in a batch].
Can be overridden by members of groups that are granted the
Batch Changes Limit] capability.
* Allow to
disable reverse DNS lookup].
This option can be set to improve push time from hosts without a reverse DNS
* Allow to
load the project cache at server startup].
* Allow members of groups granted the
AccessDatabase capability] to view metadata refs.
* Allow to
add the user to the http request attributes].
* Allow to
enable full text search in memory for review suggestions].
The maximum number of reviewers evaluated can be limited with
* Allow to provide an alternative
secure store implementation].
* link:[Issue 1195]:
Allow projects to be configured to create a new change for every uploaded commit that is not in the target branch.
* Allow to configure
options to pass to the daemon].
=== Daemon
* Allow to enable the http daemon when running in slave mode.
The `--enable-httpd` option can be used in conjunction with the `--slave` option
to allow clients to fetch from the slave over the http protocol.
HTTP Authentication may also be used when running in slave mode.
* Include the submitter's name in the change message when a change is submitted.
* Add a message to changes created via cherry pick.
When a change is cherry-picked to another branch using the cherry-pick action,
the message 'Patch Set <number>: Cherry Picked from branch <name>.' is added as
a change message on the created change.
* Don't send 'new patch set' notification emails for trivial rebases.
=== SSH
* Add new commands
`logging ls-level`] and
`logging set-level`] to show and set the logging level at runtime.
* link:[Issue 602]:
Add `--json` option to the
`review` SSH command].
Review input can be given to the `review` command in JSON format corresponding
to the REST API's
ReviewInput] entity.
* link:[Issue 2824]:
Add `--rebase` option to the
`review` SSH command].
* Add `--clear-http-password` option to the
`set-account` SSH command].
* Add `--preferred-email` option to the
`set-account` SSH command].
=== Email
* Add `$change.originalSubject` field for email templates.
GMail threads messages together by subject and ignores the list headers included
by Gerrit.
Site administrators that run servers whose end-user base is mostly on GMail can
modify the site's `ChangeSubject.vm` template to use `$change.originalSubject` to
improve threading for GMail inboxes.
The `originalSubject` field is automatically taken from the existing subject
field during first use.
=== Plugins
==== General
* Plugins can listen to account group membership changes.
The audit log service allows to register listeners to group member added and
group member deleted events. A default listener logs these events to the database
as before, but additional listeners may now be registered for these events using
the `GroupMemberAuditListener` interface.
* Plugins can validate ref operations.
Plugins implementing the `RefOperationValidationListener` interface can
perform additional validation checks against ref creation/deletion operations
before they are applied to the git repository.
* Plugins can provide project-aware top menu extensions
Plugins can provide sub-menu items within the 'Projects' context. The
'$\{projectName\}' placeholder is replaced by the project name.
* Auto register static/init.js as JavaScript plugin.
When a plugin does not expose Guice Modules explicitly, auto discover and
register static/init.js as WebUi extension if found by the plugin content
* Plugins can validate outgoing emails.
Plugins implementing `OutgoingEmailValidationListener` interface can filter
and modify outgoing emails before they are sent.
* Plugins that provide initialization steps may now use functionality
from InitUtil in core Gerrit.
* Plugins can post change reviews with historic timestamps.
This allows, for example, to write a plugin that can import a project including
review information from another Gerrit server.
* New extensions in the Java Plugin API:
** Set/Put topic.
** Get mergeable status.
** link:[Issue 461]:
Get current user.
** Get file content.
** Get file diff.
** Get comments and drafts.
** Get change edit.
==== Replication
* Projects can be specified with wildcard in the `start` command.
== Bug Fixes
=== Daemon
* Change 'Merge topic' to 'Merge changes from topic'.
When multiple changes from a topic are submitted resulting in a merge commit,
the title of the merge commit is now 'Merge changes from topic' instead of
'Merge topic'.
* Fix visibility checks for `refs/meta/config`.
Under some conditions it was possible for the `refs/meta/config` branch to be
erroneously considered not visible to the user.
* Sort list of updated changes in output from push.
* link:[Issue 2940]:
Improve warning messages when `Change-Id` is missing in the commit message.
** Add a hint to amend the commit after installing the commit-msg hook.
** Don't show 'Suggestion for commit message' when `Change-Id` is missing.
* Allow to publish draft patch sets even when `allowDrafts` is false.
If a user uploaded a change while `allowDrafts` was enabled, and then it was
disabled by the administrator, the uploaded change could not be published and
was stuck in the draft state.
* link:[Issue 3249]:
Fix server error when checking mergeability of a change.
* Workaround Guice bug "getPathInfo not decoded".
Due to link:[Guice issue 745], cloning
of a repository with a space in its name was impossible.
=== Secondary Index / Search
* link:[Issue 2822]:
Improve Lucene analysis of words linked with underscore or dot.
Instead of treating words linked with underscore or dot as one word, Lucene now
treats them as separate words.
* Fix support for `change~branch~id` in query syntax.
=== Configuration
* Remove the 'Generate HTTP Password' capability.
The 'Generate HTTP Password' capability has been removed to close a security
vulnerability. Now only administrators are allowed to generate and delete other
users' http passwords via the REST or SSH interface.
It is encouraged to clean up your `project.config` settings after upgrading.
* Fix support for multiple `footer` tokens in tracking ID config.
Contrary to
the documentation], if more than one `footer` token was specified in the
`trackingid` section, only the first was used.
* Treat empty
`hooks.*`] values as missing, rather than trying to execute the hooks
* Fix `changed-merged` hook configuration.
Contrary to the
documentation], the changed-merged hook configuration value was being
read from `hooks.changeMerged`. Fix to use `hooks.changeMergedHook` as
=== Web UI
==== Change List
* link:[Issue 3304]:
Always show a tooltip on the label column entries.
==== Change Screen
* link:[Issue 3147]:
Allow to disable muting of common path prefixes in the file list.
In the file table, parts of the file path that are common to the file previously
listed are muted. The purpose of this is to make it easier to see files that all
belong under the same path, but some users find it annoying.
This feature can now be enabled or disabled, per user, with the 'Mute Common
Path Prefixes In File List' setting.
* link:[Issue 3130]:
Remove special handling of 'LGTM' in review comments
Typing 'LGTM' in the review cover message no longer automatically selects the
highest available Code-Review score.
* Show a confirmation dialog before deleting a draft change or patch set.
Previously there was no confirmation and a draft change or revision patch
set would be lost if the button was accidentally clicked.
* link:[Issue 2533]:
Improve the layout and color scheme of buttons.
Several improvements have been made:
** Move 'Publish' and 'Delete Change/Revision' buttons into header.
If a change/revision is a draft the natural next step is to publish (or delete)
it, hence these buttons should be displayed in a more prominent place.
** Highlight the 'Publish' button in blue.
If a change is a draft the natural next step is to publish it, hence
the 'Publish' button should be highlighted similar to the quick
approve button.
** Fix the border color of buttons on the reply popup.
The buttons are blue but had white borders, which was inconsistent with the
buttons on the change screen.
** Remove red color for 'Abandon' and 'Restore' buttons.
There is nothing dangerous about these operations that justifies
highlighting the buttons in red color. When the buttons are clicked
there is a popup where the user must confirm the operation, so it can
still be canceled.
** Hide quick approve button for draft changes.
A draft change cannot be submitted, hence quick approving it is not that
important. Hiding the quick approve button on draft changes makes space in the
header for displaying more important actions such as 'Publish'.
* Differentiate between conflicts and already merged errors in cherry-pick
When a cherry-pick operation failed with 'Cherry pick failed' error, there was no
way to know the reason for the failure: merge conflict or the commit is already
on the target branch. These failures are now differentiated and an appropriate
error is reported.
* link:[Issue 2837]:
Improve display of long user names for collapsed comments in history.
If there were several users with long user names with the same prefix, e.g.
'AutomaticGerritVoterLinux' and 'AutomaticGerritVoterWindows', they would both
be shown as 'AutomaticGerritVo...' and users had to expand the comment to see
the full user name.
The ellipsis is now inserted in the middle of the user name so that the start
and end of the user name are always visible, e.g. 'AutomaticG...VoterLinux' and
* link:[Issue 2992]:
Fix display of review comments for Chrome on Android.
Chrome for Android has Font Boosting, which caused the review comments to
be displayed too large.
* link:[Issue 2909]:
Make change owner votes removable.
If a change owner voted on a change, it was not possible for anyone other
than the owner to remove the vote.
* Preserve topic when cherry-picking.
When a change is cherry-picked, the topic from the source change is preserved
on the newly created change.
* link:[Issue 3007]:
Make the selected tab persistent.
If a change from the 'Same Topic' tab was clicked, the selected tab would reset
to the default tab ('Related Changes').
* Left-align column titles in the file list.
* Increase right margin of download box to make space for scrollbar.
Under some circumstances the browser's scrollbar would be shown over the
copy-to-clipboard icons in the download dropdown.
* Display +1 score's text next to the checkbox for simple boolean labels.
In the reply box, the text of the label score is displayed on the right hand
side when a score is selected, but this was missing for simple boolean labels.
* Don't show missing accounts as reviewer suggestions.
* Show the email address that matched the search in reviewer suggestions.
When matching accounts by email address against an external account, results
now show the email address that matched, not the preferred email address.
* Fix accidental reviewer selection on slow networks.
* link:[Issue 3120]:
Align parent weblinks with parent commits in the commit box.
==== Side-By-Side Diff
* Return to normal mode after editing a draft comment.
Previously it would remain in visual mode.
* Fix C++ header and source syntax highlighting
cpp and hpp files were sometimes rendered with C mode and not the extended C++
mode. This prevented keywords like `class` from being colored by the
==== Project Screen
* Fix alignment of checkboxes on project access screen.
The 'Exclusive' checkbox was not aligned with the other checkboxes.
==== Changes
* Remove the administrator restriction on the
index change] endpoint.
The endpoint can now be used by any user who has visibility of the change.
* Only include account ID in responses unless `DETAILED_ACCOUNTS` option is set.
The behavior was inconsistent with the
documentation]. In the default case it was including only the account name,
rather than only the account ID.
* Include revision's ref in responses.
The ref of a revision was only returned as part of the fetch info, which is only
available if the download commands are installed.
* Correctly set the limit to the default when no limit is given in the
suggest reviewers] endpoint.
* Return correct response from 'delete draft' endpoints.
When the `change.allowDrafts` setting is False, it is not allowed to delete
draft changes or patch sets.
In this case the response `405 Method Not Allowed` is now returned, instead of
`409 Conflict`.
==== Projects
* Make it mandatory to specify at least one of the `--prefix`, `--match` or `--regex`
options in the
list projects] endpoint.
* link:[Issue 2706]:
Do not delete branches concurrently.
Deleting multiple branches from the UI was resulting in a server error when
branches were in the packed-refs.
* Add retry logic for lock failure when deleting a branch.
* link:[Issue 3153]:
Fix handling of project names ending with `.git`.
The projects REST API documentation states that the `.git` suffix will be
stripped off the input project name, if present.
This was working for the 'Create Project' endpoint, but not for any of the
=== Plugins
==== Replication
* Create missing repositories on the remote when replicating with the git
* Make `createMissingRepositories = false` take effect on `project-created` event.
Previously `createMissingRepositories = false` would prevent the replication
plugin from trying to create a new project when a `ref-updated` event was fired,
but when a `project-created` event was fired the replication plugin would try to
create a project on the remote.
== Upgrades
* Update Antlr to 3.5.2.
* Update ASM to 5.0.3.
* Update CodeMirror to 4.10.0-6-gd0a2dda.
* Update Guava to 18.0.
* Update Guice to 4.0-beta5.
* Update GWT to 2.7.
* Update gwtjsonrpc to 1.7-2-g272ca32.
* Update gwtorm to 1.14-14-gf54f1f1.
* Update Jetty to 9.2.9.v20150224.
* Update JGit to
* Update Lucene to 4.10.2.
* Update Parboiled to 1.1.7.
* Update Pegdown to 1.4.2.