blob: 4f068cc40808cc95451b58e9f4fe34320e2c83ca [file] [log] [blame]
= Release notes for Gerrit 2.10
Gerrit 2.10 is now available:
link:https://www.gerritcodereview.com/download/gerrit-2.10.war[
https://www.gerritcodereview.com/download/gerrit-2.10.war]
Gerrit 2.10 includes the bug fixes done with
link:ReleaseNotes-2.9.1.html[Gerrit 2.9.1],
link:ReleaseNotes-2.9.2.html[Gerrit 2.9.2],
link:ReleaseNotes-2.9.3.html[Gerrit 2.9.3] and
link:ReleaseNotes-2.9.4.html[Gerrit 2.9.4].
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
----
*WARNING:* When upgrading from an existing site that was initialized with Gerrit
version 2.6 to version 2.9.1, the primary key column order will be updated for
some tables. It is therefore important to upgrade the site with the `init` program,
rather than only copying the .war file over the existing one.
It is recommended to run the `init` program in interactive mode. Warnings will
be suppressed in batch mode.
*WARNING:* Upgrading to 2.10.x requires the server be first upgraded to 2.8
(or 2.9) and then to 2.10.x. If you are upgrading from 2.8.x or
later, you may ignore this warning and upgrade directly to 2.10.x.
*WARNING:* The `auth.allowGoogleAccountUpgrade` setting is no longer supported.
*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].
== Release Highlights
* Support for externally loaded plugins.
+
Plugins can be implemented in Scala or Groovy using the
link:https://gerrit-review.googlesource.com/\#/admin/projects/plugins/scripting/groovy-provider[
Groovy provider] and
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/scala-provider[
Scala provider] plugins.
* Customizable 'My' menu.
+
Users can customize the contents of the 'My' menu in the top menu. Administrators
can configure the default contents of the menu.
== New Features
=== Web UI
==== Global
* Add 'All-Users' project to store meta data for all users.
* Administrators can customize the default contents of the 'My' menu.
* Add 'My' > 'Groups' menu entry that shows the list of own groups.
* Allow UiActions to perform redirects without JavaScript.
==== Change Screen
* Display avatar for author, committer, and change owner.
* Remove message box when editing topic of change.
* link:https://code.google.com/p/gerrit/issues/detail?id=2573[Issue 2573]:
Add option to quickly add current user as reviewer of a change.
+
An 'Add Me' button is displayed next to the 'Add' button when searching for
reviewers to add to a change. This allows users to quickly add themselves as a
reviewer on the change without having to type their name in the search
box.
* Link project name to dashboard.
* link:https://code.google.com/p/gerrit/issues/detail?id=2667[Issue 2667]:
Allow to customize Submit button label and tooltip.
==== Side-by-Side Diff Screen
* Allow the user to select the syntax highlighter.
* Add `Shift-a` keybinding to show/hide left side.
* Allow to toggle empty pane for added and deleted files.
* Add syntax highlighting of the commit message.
==== Change List / Dashboards
* Remove age operator when drilling down from a dashboard to a query.
* link:https://code.google.com/p/gerrit/issues/detail?id=2646[Issue 2646]:
Add option to show Change-ID in the change table.
* Make the own user dashboard available under '/dashboard/self'.
* Add 'R' key binding to refresh custom dashboards.
+
Account dashboards, search results and the change screen refresh their content
when 'R' is pressed. The same binding is added for custom dashboards.
==== Project Screens
* link:https://code.google.com/p/gerrit/issues/detail?id=2751[Issue 2751]:
Add support for filtering by regex in project list screen.
* Disable content merge option if project's merge strategy is fast forward only.
* Add branch actions to 'Projects > Branches' view.
==== User Preferences
* Users can customize the contents of the 'My' menu from the preferences
screen.
* link:http://code.google.com/p/gerrit/issues/detail?id=2628[Issue 2628]:
Replace 'Display name in review category' preference with a list of options.
+
Including new options 'Show Abbreviated Name' to display abbreviated reviewer
names and 'Show Username' to show usernames in the change list.
=== Secondary Index / Search
* Allow to search projects by prefix.
* Add search fields for number of changed lines.
* Add suggestions for 'is:pending' and 'status:pending'.
* Add 'pending' as alias for 'open'.
* link:http://code.google.com/p/gerrit/issues/detail?id=2545[Issue 2545]:
Support `topic:""` to find changes with no topic.
* Search more fields in the default search query.
+
If a search is given with only a text, search over a variety of fields
rather than just the project name.
=== ssh
* Expose SSHD backend in
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/cmd-show-connections.html[
`show connections`] SSH command.
* Add support for JCE (Java Cryptography Extension) ciphers.
=== REST API
==== General
* Remove `kind` attribute from REST containers.
* Support `AcceptsPost` on non top-level REST collections.
* Accept `HEAD` in RestApiServlet.
==== Accounts
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-accounts.html#get-user-preferences[
Get user preferences].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-accounts.html#set-user-preferences[
Set user preferences].
==== Changes
* link:https://code.google.com/p/gerrit/issues/detail?id=2338[Issue 2338]:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#create-change[
Create change].
* Add `other-branches` option on
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-mergeable[
Get mergeable] endpoint.
+
If the `other-branches` option is specified, the mergeability will also be
checked for all other branches.
==== Config
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#list-tasks[
List tasks].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#get-task[
Get task].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#delete-task[
Delete task].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#list-caches[
List caches].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-cache[
Flush cache].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-several-caches[
Flush several caches].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#flush-all-caches[
Flush all caches].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-config.html#get-summary[
Get server summary].
==== Projects
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#ban-commit[
Ban commits].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-content[
Get the content of a file from a certain commit].
* link:https://code.google.com/p/gerrit/issues/detail?id=2604[Issue 2604]:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-commit[
Get an arbitrary commit from a project].
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#get-reflog[
Get the reflog of a branch].
* Add option 'S' to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-projects.html#list-projects[
list projects endpoint] to support query offset.
=== Daemon
* Add change subject to output of change URL on push.
* Indicate trivial rebase and commit message update on push.
* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/user-upload.html#review_labels[
adding review labels on changes] during git push.
* link:https://code.google.com/p/gerrit/issues/detail?id=2634[Issue 2634]:
Add change kind to PatchSetCreatedEvent.
=== Configuration
* Use
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#core.useRecursiveMerge[
recursive merge] by default.
* Allow to configure the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#download.archive[
available download archive formats].
* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/database-setup.html#createdb_maxdb[
SAP MaxDB].
* link:https://code.google.com/p/gerrit/issues/detail?id=2041[Issue 2041]:
Allow
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-labels.html#label_defaultValue[
configuration of a default value for a label].
* Allow projects to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-project-config.html#mimetype-section[
configure MIME types for files].
* Allow to configure
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#gc[
periodic garbage collection of all projects].
* Remove `auth.allowGoogleAccountUpgrade` setting.
+
It's been more than 5 years since Gerrit ran on Google AppEngine. It is assumed
that everyone has upgraded their installations to a modern 2.x based server, and
will not need to have this upgrade path enabled.
* link:https://code.google.com/p/gerrit/issues/detail?id=2618[Issue 2618]:
Remove `label.Label-Name.abbreviation` setting.
+
The setting was no longer used, so it has been removed.
* New `httpd.registerMBeans` setting.
+
The
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-gerrit.html#httpd.registerMBeans[
`httpd.registerMBeans` setting] allows to enable (or disable) registration of
Jetty MBeans for Java JMX.
* link:https://code.google.com/p/gerrit/issues/detail?id=2600[Issue 2600]:
Add documentation of how to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/install-j2ee.html#tomcat[
configure Tomcat] to allow embedded slashes.
=== Misc
* Don't allow empty user name and passwords in InternalAuthBackend.
* link:https://code.google.com/p/gerrit/issues/detail?id=2596[Issue 2596]:
Add change-owner parameter to gerrit hooks.
=== Plugins
* Support for externally loaded plugins.
+
Plugins can be implemented in Scala or Groovy using the
link:https://gerrit-review.googlesource.com/\#/admin/projects/plugins/scripting/groovy-provider[
Groovy provider] and
link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/scripting/scala-provider[
Scala provider] plugins.
* Allow plugins to replace the WebSession implementation.
+
Plugins can replace the existing implementation with the statement:
`DynamicItem.bind(binder(), WebSession.class).to(...);`
in a module designated as a `<Gerrit-HttpModule>` in the manifest.
+
Just the Cache implementation used for web sessions can be changed
by binding to a subclass of the now abstract `CacheBasedWebSession`
which supplies the Cache in the superclass constructor.
+
This is a step towards solving web session issues with multi-master.
+
The link:https://gerrit-review.googlesource.com/#/admin/projects/plugins/websession-flatfile[
websession-flatfile plugin] replaces the built-in Gerrit WebSession implementation
with one that uses a flat file based cache.
* Allow http and ssh plugins to replace the Gerrit-provided DynamicItem.
* New extension point to listen to usage data published events.
+
Plugins implementing the `UsageDataPublishedListener` can listen to
events published about usage data.
* New extension point to link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/dev-plugins.html#pre-upload-hook[
register JGit PreUploadHook].
+
Plugins may register PreUploadHook instances in order to get
notified when JGit is about to upload a pack. This may be useful
for those plugins which would like to monitor usage in Git
repositories.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/config-validation.html#pre-upload-validation[
pre-upload validation extension point].
+
Plugins implementing the `UploadValidationListener` interface can
perform additional validation checks before any upload operations
(clone, fetch, pull). The validation is executed right before Gerrit
begins to send a pack back to the git client.
* New link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/dev-plugins.html#links-to-external-tools[
external tool links extension points].
+
Plugins can now contribute project links that will be displayed on the project
list screen in the 'Repository Browser' column, and revision links that will be
shown on the change screen.
* Allow creation of persistent caches after server is started.
+
This enables plugins to create own persistent caches when they are
installed.
* Make gerrit's HttpServletRequest and HttpServletResponse visible to http
plugins.
* New extensions in the Java Plugin API:
** Query changes
** Create/get/list projects
** Get/set review status
** Create change
** Get account
** Star/unstar changes
** Check if revision needs rebase
== Bug Fixes
=== General
* Use fixed rate instead of fixed delay for log file compression.
+
Log file compression was scheduled using a fixed delay. This caused the start
times to drift over time. Use a fixed rate instead so that the compression
reoccurs at the same time every day.
* Don't email project watchers on new draft changes.
+
If a draft change is created by pushing to `refs/drafts/master`, only the reviewers
explicitly named on the command line (which may be empty) should be notified of
the change. Users watching the project should not be notified, as the change has
not yet been published.
* Fix resource exhaustion due to unclosed LDAP connection.
+
When `auth.type` is set to `LDAP` (not `LDAP_BIND`), two LDAP connections are
made, but one was not being closed. This eventually caused resource exhaustion
and LDAP authentications failed.
=== Access Permissions
* link:https://code.google.com/p/gerrit/issues/detail?id=2995[Issue 2995]:
Fix faulty behaviour in `BLOCK` permission.
+
`BLOCK` can be overruled with `ALLOW` on the same project, however there was a
bug when a child of the above project duplicates the `ALLOW` permission. In this
case the `BLOCK` would always win for the child, even though the `BLOCK` was
overruled in the parent.
=== Web UI
==== General
* link:https://code.google.com/p/gerrit/issues/detail?id=2595[Issue 2595]:
Make gitweb redirect to login.
+
Gitweb redirects to the login page if the user isn't currently logged.
* link:https://code.google.com/p/gerrit/issues/detail?id=2631[Issue 2631]:
Re-arrange info at footer of Gerrit web UI pages.
+
Move the Gerrit info link so that there are no links close to the next page link.
* Only create All-Projects ACL once.
+
If `refs/meta/config` already existed it was overwritten with default configuration
if a site administrator ran `java -war gerrit.war init -d /some/existing/site --batch`.
==== Change Screen
* Don't linkify trailing dot or comma in messages.
+
As linkifying trailing dots and trailing commas does more harm than
good, we only treat dots and commas as being part of urls, if they are
neither followed by whitespace nor occur at the end of a string.
* Re-enable the 'Cherry Pick' button after canceling the dialog.
+
If the dialog was canceled, the button remained disabled and could not be
used again.
* Improve message when removing a reviewer.
* link:http://code.google.com/p/gerrit/issues/detail?id=527[Issue 527]:
Preserve line breaks in inline and review comments.
* Always show 'No Score' as label help for zero votings.
* Only reset the edited commit message text on cancel.
* Only include message on quick approve if reply is open.
* List reviewers with dummy approvals on closed changes.
* link:http://code.google.com/p/gerrit/issues/detail?id=2890[Issue 2890]:
Enable scrollbars for "Edit Commit Message" TextArea.
* Use current time instead of submitter time for cherry-picked commits.
+
Cherry picking with the submitter time could cause massive clock skew
in the Git commit graph if the server was shutdown before the submit could
finish, and restarted hours later.
* Fix exception when clicking on a binary file without being signed in.
==== Side-By-Side Diff
* link:https://code.google.com/p/gerrit/issues/detail?id=2970[Issue 2970]:
Fix misalignment of side A and side B for long insertion/deletion blocks.
* Give B side full width when A side is hidden.
* Fix scroll alignment when showing hidden A side.
* Bind Shift-N to search-prev in vim mode.
* Allow text selection in diff header.
* Display diff header on mode changes and renames.
* Document Shift-{Left,Right} in `?` help popup.
* Show `[` and `]` shortcut keys in nav arrow tooltips.
* Disable "Render = Slow" mode on files over 4000 lines.
* Keep keyboard bindings alive after click in padding.
* Jump to the first change on either side.
* Expand margin between paragraphs in comments.
* Include content on identical files with mode change.
==== User Settings
* Avoid loading all SSH keys when adding a new one.
=== Secondary Index / Search
* Omit corrupt changes from search results.
* Allow illegal label names from default search predicate.
=== REST
==== General
* Fix REST API responses for 3xx and 4xx classes.
==== Changes
* Fix inconsistent behaviour in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#add-reviewer[
add reviewer endpoint]
+
When adding a single reviewer to a change, it was possible to use the endpoint
to add a user who had no visibility to the change or whose account was invalid.
==== Changes
* link:https://code.google.com/p/gerrit/issues/detail?id=2583[Issue 2583]:
Reject inline comments on files that do not exist in the patch set.
* Allow forcing mergeability check on
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-mergeable[
Get mergeable].
* link:https://code.google.com/p/gerrit/issues/detail?id=2622[Issue 2622]:
Respect patch set visibility for messages.
+
Messages retrieval didn't check for patch set visbility and thus messages for
draft patch sets were returned back to the client.
* link:https://code.google.com/p/gerrit/issues/detail?id=2782[Issue 2782]:
Add missing documentation of the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-related-changes[
Get Related Changes] endpoint.
* link:https://code.google.com/p/gerrit/issues/detail?id=2723[Issue 2723]:
Clarify the response info in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#get-change-detail[
Get Change Detail] endpoint.
* link:https://code.google.com/p/gerrit/issues/detail?id=2693[Issue 2693]:
Clarify the response info in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/rest-api-changes.html#list-comments[
List Comments] endpoint.
=== SSH
* Prevent double authentication for the same public key.
+
This is a workaround for link:https://issues.apache.org/jira/browse/SSHD-300[
SSHD-300].
* Let `kill` SSH command only kill tasks that are visible to the caller.
* Require 'Administrate Server' capability to see server summary output from
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.10/cmd-show-caches.html[
`show-caches`] command.
* Include all command arguments in SSH log entry.
+
The SSH log only included the first argument. This prevented the repository name
from being logged when `git receive-pack` was executed instead of `git-receive-pack`.
=== Daemon
* link:https://code.google.com/p/gerrit/issues/detail?id=2284[Issue 2284]:
More detailed error message when failing to upload new change.
+
When the uploaded change cannot be created on the underlying Git repository, a
more descriptive error message is displayed on both client and server side. This
allows to troubleshoot internal errors (e.g. JGit lock failures or other causes)
and help out in the resolution.
* Enforce HTTP password checking on gitBasicAuth.
* Fix missing commit messages on submodule direct pushes.
+
The commit message in superproject was missing on submodule's
directly pushed changes.
=== Plugins
==== General
* link:https://code.google.com/p/gerrit/issues/detail?id=2895[Issue 2895]:
Fix reload of plugins that use DynamicItem.
* Invoke `StartPluginListener` and `ReloadPluginListener` only after start/reload
is fully done.
* Set `Last-Modified` on cached Documentation resources.
* Return HTTP 304 for not modified SmallResources.
* Fix ChangeListener auto-registered implementations.
==== Replication
* Move replication logs into a separate file.
* Promote replication scheduled logs to info.
* Show replication ID in the log and in show-queue command.
== Upgrades
* Update Guava to 17.0
* Update Guice to 4.0-beta5
* Update GWT to 2.6.1
* Update httpclient to 4.3.4
* Update httpcore to 4.3.2
* Update Jcraft SSH to 0.1.51
* Update Jetty to 9.2
* Update JGit to 3.6.2.201501210735-r
* Update log4j to 1.2.17
* Update Servlet API to 8.0.5
* Update slf4j to 1.7.7
* Update Velocity to 1.7