blob: b8e51eaa7b90c405e4d40acda2cfb13ef80ccb79 [file] [log] [blame]
Release notes for Gerrit 2.11
=============================
Gerrit 2.11 is now available:
link:https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war[
https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war]
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.11.x requires the server be first upgraded to 2.1.7 (or
a later 2.1.x version), and then to 2.11.x. If you are upgrading from 2.2.x.x or
later, you may ignore this warning and upgrade directly to 2.11.x.
*WARNING:* The 'Generate HTTP Password' capability has been
link:#remove-generate-http-password-capability[removed].
*WARNING:* Google will
link:https://developers.google.com/+/api/auth-migration[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
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-sso.html#_multiple_identities[
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:https://code.google.com/p/gerrit/wiki/SqlMergeUserAccounts[merge it].
Release Highlights
------------------
* link:http://code.google.com/p/gerrit/issues/detail?id=505[Issue 505]:
Changes can be created and edited directly in the browser. See the
link:#inline-editing[Inline editing] section for more details.
* The old change screen is removed.
* The deprecated '/query' URL is removed and will now return `Not Found`.
Experimental Features
---------------------
The following new features are experimental. They are not fully documented yet,
and it is not recommended to enable them in live production systems.
* Migration of review information from database to git notes.
+
Groundwork has been done to implement migration of review information from the
database to a git notes based backend.
+
Existing review information can be migrated from the review database to
git notes with the `RebuildNotedb` program.
+
This feature can be enabled with the following settings in `gerrit.config`:
----
[gerrit]
notedbpath = notedb
[notedb "changes"]
write = true
read = true
----
* Hashtags.
+
Hashtags can be added to changes. The hashtags are stored in git notes and
are indexed in the secondary index.
+
This feature requires the notedb to be enabled.
New Features
------------
Web UI
~~~~~~
[[inline-editing]]
Inline Editing
^^^^^^^^^^^^^^
Refer to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/user-inline-edit.html[
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
screen.
* File content can be edited in a full screen CodeMirror window with support for
themes, syntax highlighting, different key maps (Emacs, Vim, Default).
* 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 edit mode with seamless navigation
to CodeMirror for editing.
* Edit mode can be started from the side-by-side diff screen with seamless
navigation to CodeMirror.
* The commit message can be changed in context of change edit. The 'Edit Message'
button is still supported, but now it creates a change edit that must be published.
* Files can be added, deleted, restored and modified directly in browser.
* User-specific configuration dedicated to edit mode in CodeMirror are stored in
the `All-Users` repository rather than in the database.
Change Screen
^^^^^^^^^^^^^
* Remove the 'Edit Message' button from the change screen.
+
The commit message is now edited using the inline edit feature.
* Show the parent commit's subject as a tooltip.
* Decorate abandoned changes in the 'Related Changes' list with a dark red dot.
* link:http://code.google.com/p/gerrit/issues/detail?id=2541[Issue 2541],
link:http://code.google.com/p/gerrit/issues/detail?id=2974[Issue 2974]:
Allow the 'Reply' button's
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#change.replyLabel[
label and tooltip] to be configured.
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:https://code.google.com/p/gerrit/issues/detail?id=2848[Issue 2848]: CSharp
** Dart
** Dockerfile
** GLSL shader
** Objective C
** link:http://code.google.com/p/gerrit/issues/detail?id=2779[Issue 2779]: reStructured text
** Soy
REST
~~~~
Changes
^^^^^^^
* The https://gerrit-review.googlesource.com/Documentation/2.11/rest-api-changes.html#message[
Edit Commit Message] endpoint is deprecated in favor of the new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-change-edit-message[
Change commit message in Change Edit] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#publish-edit[
Publish Change Edit] endpoints.
* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#check-change[
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 and explain some of these possible states
of a change.
Change Edits
^^^^^^^^^^^^
Several new endpoints are added to support the inline edit feature.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-detail[
Get Edit Detail].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-edit-file[
Change file content in Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#post-edit[
Restore file content in Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-change-edit-message[
Change commit message in Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#delete-edit-file[
Delete file in Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-file[
Retrieve file content from Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-message[
Retrieve commit message from Change Edit or current patch set of the change].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#publish-edit[
Publish Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#rebase-edit[
Rebase Change Edit].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#delete-edit[
Delete Change Edit].
Projects
^^^^^^^^
* Add filtering and pagination options on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-branches[
list branches] endpoint.
* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-tags[
list tags] endpoint.
* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#get-tag[
get tag] endpoint.
Configuration
~~~~~~~~~~~~~
* link:https://code.google.com/p/gerrit/issues/detail?id=2786[Issue 2786]:
Allow non-administrators to modify user accounts.
+
A new global capability,
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_modifyAccount[
'Modify Account'], allows the granted group members to modify user account
settings via the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`set-account` SSH command].
+
Modification of users' SSH keys is still restricted to administrators.
* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#ldap.useConnectionPooling[
LDAP connection pooling].
* link:https://code.google.com/p/gerrit/issues/detail?id=699[Issue 699]: Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#receive.maxBatchChanges[
limit max number of changes pushed in a batch].
+
Can be overridden by members of groups that are granted the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_batchChangesLimit[
Batch Changes Limit] capability.
* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#gerrit.disableReverseDnsLookup[
disable reverse DNS lookup].
+
This option can be set to improve push time from hosts without a reverse DNS
entry.
* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#cache.projects.loadOnStartup[
load the project cache at server startup].
* Allow members of groups granted the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_accessDatabase[
AccessDatabase capability] to view metadata refs.
* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#http.addUserAsRequestAttribute[
add the user to the http request attributes].
* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#suggest.fullTextSearch[
enable full text search in memory for review suggestions].
+
The maximum number of reviewers evaluated can be limited with
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#suggest.fullTextSearchMaxMatches[
suggest.fullTextSearchMaxMatches].
* Allow to provide an alternative
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#gerrit.secureStoreClass[
secure store implementation].
* link:https://code.google.com/p/gerrit/issues/detail?id=1195[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
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#container.daemonOpt[
options to pass to the daemon].
* Remove support for Google accounts and add support for Launchpad accounts on
the OpenID login page.
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.
* Include the submitter's name in the change message when a change is submitted.
ssh
~~~
* Add new commands
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-logging-ls-level.html[
`logging ls-level`] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-logging-set-level.html[
`logging set-level`] to show and set the logging level at runtime.
* link:https://code.google.com/p/gerrit/issues/detail?id=602[Issue 602]:
Add `--json` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-review.html[
`review` SSH command].
+
Review input can be given to the `review` command in JSON format corresponding
to the REST API's
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#review-input[
ReviewInput] entity.
* link:https://code.google.com/p/gerrit/issues/detail?id=2824[Issue 2824]:
Add `--rebase` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-review.html[
`review` SSH command].
* Add `--clear-http-password` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`set-account` SSH command].
* Add `--preferred-email` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`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
scanner.
* 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.
* New extensions in the Java Plugin API:
** Set/Put topic.
** Get mergeable status.
** link:https://code.google.com/p/gerrit/issues/detail?id=461[Issue 461]:
Get current user.
** Get file content.
** Get file diff.
** Get comments and drafts.
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:https://code.google.com/p/gerrit/issues/detail?id=2940[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.
Secondary Index / Search
~~~~~~~~~~~~~~~~~~~~~~~~
* link:https://code.google.com/p/gerrit/issues/detail?id=2822[Issue 2822]:
Improve Lucene analysis of words linked with '_' or '.'.
+
Instead of treating words linked with '_' or '.' as one word, Lucene now
treats them as separate words.
* Fix support for change~branch~id in query syntax.
Configuration
~~~~~~~~~~~~~
[[remove-generate-http-password-capability]]
* 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.
Web UI
~~~~~~
Change Screen
^^^^^^^^^^^^^
* link:http://code.google.com/p/gerrit/issues/detail?id=2894[Issue 2894]:
Link to change screen for merged or abandoned changes in the 'Related Changes'
list.
+
For changes in the 'Related Changes' tab that are closed the link was
bringing the user to GitWeb, and not as expected to the change screen.
* 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:https://code.google.com/p/gerrit/issues/detail?id=2533[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.
** Move 'Submit' button into header.
+
If a change is ready to submit the natural next step is to submit it, hence the
'Submit' button should be displayed in a more prominent place. This is consistent
with displaying other buttons in the header.
** 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 a proper error
is reported to the client.
* link:https://code.google.com/p/gerrit/issues/detail?id=2837[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
'AutomaticG...terWindows'.
* link:https://code.google.com/p/gerrit/issues/detail?id=2992[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:https://code.google.com/p/gerrit/issues/detail?id=2909[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:http://code.google.com/p/gerrit/issues/detail?id=3007[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').
Side-By-Side Diff
^^^^^^^^^^^^^^^^^
* Return to normal mode after editing a draft comment.
+
Previously it would remain in visual mode.
Project Screen
^^^^^^^^^^^^^^
* Fix alignment of checkboxes on project access screen.
+
The 'Exclusive' checkbox was not aligned with the other checkboxes.
REST API
~~~~~~~~
Changes
^^^^^^^
* Remove the administrator restriction on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#index-change[
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
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-accounts.html#account-info[
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
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#suggest-reviewers[
suggest reviewers] endpoint.
Projects
^^^^^^^^
* Make it mandatory to specify at least one of the `--prefix`, `--match` or `--regex`
options in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-projects[
list projects] endpoint.
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 gwtorm to 1.14-14-gf54f1f1.
* Update Jetty to 9.2.6.
* Update JGit to 3.6.0.201412230720-r.
* Update Lucene to 4.10.2.
* Update Parboiled to 1.1.6-14-g76586a4.
* Update Pegdown to 1.4.2.