blob: d6c33f6164edbf0a602b1f4d874c5a406e0ec11a [file] [log] [blame]
Release notes for Gerrit 2.12
=============================
Gerrit 2.12 is now available:
link:https://www.gerritcodereview.com/download/gerrit-2.12.war[
https://www.gerritcodereview.com/download/gerrit-2.12.war]
Important Notes
---------------
*WARNING:* This release contains schema changes. To upgrade:
----
java -jar gerrit.war init -d site_path
----
*WARNING:* To use online reindexing when upgrading to 2.12.x, the server must
first be upgraded to 2.8 (or 2.9) and then through 2.10 and 2.11 to 2.12.x. If
reindexing will be done offline, you may ignore this warning and upgrade directly
to 2.12.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:* The Solr secondary index is no longer supported. With this release
the only supported secondary index is Lucene.
*WARNING:* The format of the `ref-updated` event has changed. Users of the
link:https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger[
Jenkins Gerrit Trigger plugin] with jobs triggering on `ref-updated` should
upgrade to at least
link:https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger#GerritTrigger-Version2.15.1%28releasedSept142015%29[
version 2.15.1]. If an upgrade of the plugin is not possible, a workaround is
to change the branch configuration to type `Path` with a pattern like
`refs/*/master` instead of `Plain` and `master`.
Release Highlights
------------------
This release includes the following new features. See the sections below for
further details.
* New change submission workflows: 'Submit Whole Topic' and 'Submitted Together'.
* Support for GPG Keys and signed pushes.
New Features
------------
New Change Submission Workflows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* New 'Submit Whole Topic' setting.
+
When the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#change.submitWholeTopic[
`change.submitWholeTopic`] setting is enabled, all changes belonging to the same
topic will be submitted at the same time.
+
This setting should be considered experimental, and is disabled by default.
* Submission of changes may include ancestors.
+
If a change is submitted that has submittable ancestor changes, those changes
will also be submitted.
* The merge queue is removed.
+
Changes that cannot be submitted due to missing dependencies will no longer
enter the 'Submitted, Merge Pending' state.
GPG Keys and Signed Pushes
~~~~~~~~~~~~~~~~~~~~~~~~~~
* Signed push can be enabled by setting
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#receive.enableSignedPush[
`receive.enableSignedPush`] to true.
+
When a client pushes with `git push --signed`, Gerrit ensures that the push
certificate is valid and signed with a valid public key stored in the
`refs/gpg-keys` branch of the `All-Users` repository.
* When signed push is enabled, and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#gerrit.editGpgKeys[
`gerrit.editGpgKeys`] is set to true, users may upload their public GPG
key via the REST API or UI.
+
If this setting is not enabled, GPG keys may only be added by administrators
with direct access to the `All-Users` repository.
* Administrators may also configure
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#receive.certNonceSeed[
`receive.certNonceSeed`] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#receive.certNonceSlop[
`receive.certNonceSlop`].
Secondary Index
~~~~~~~~~~~~~~~
* link:http://code.google.com/p/gerrit/issues/detail?id=3333[Issue 3333]:
Support searching for changes by author and committer.
+
Changes are indexed by the git author and committer of the latest patch set,
and can be searched with the `author:` and `committer:` operators.
+
Changes are matched on either the exact whole email address, or on parts of the
name or email address.
* Add `from:` search operator to match by owner of change or author of comments.
* Add `commentby:` search operator to search by author of comments.
* Change the `topic:` search operator to search by the exact topic name.
* Add `intopic:` search operator to search by topics containing the search term.
* link:http://code.google.com/p/gerrit/issues/detail?id=3291[Issue 3291]:
Add `has:edit` search operator to match changes that have edit revisions on them.
* Allow configuration of maximum query size.
+
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#index.maxTerms[
`index.maxTerms`] can be set to limit the number of leaf index terms.
* Expose Lucene index writers for plugins.
+
Plugins can now reconfigure various Lucene performance related parameters
at runtime.
* Make Lucene index writers auto-commit writers.
+
Plugins can now temporarily turn on auto-committing in situations where it makes
sense to enforce all changes to be written to disk ASAP.
UI
~~
General
^^^^^^^
* Edit and diff preferences can be modified from the user preferences screen.
+
Previously it was only possible to edit these preferences from the actual
diff and edit screens.
* Add 'Edits' to the 'My' dashboard menu to list changes on which the user
has an unpublished edit revision.
* Support for URL aliases.
+
Administrators may define
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#urlAlias[
URL aliases] to map plugin screens into the Gerrit URL namespace.
+
Plugins may use user-specific URL aliases to replace certain screens for certain
users.
Project Screen
^^^^^^^^^^^^^^
* New tab to list the project's tags, similar to the branch list.
Inline Editor
^^^^^^^^^^^^^
* Store and load edit preferences in git.
+
Edit preferences are stored and loaded to/from the `All-Users` repository.
* Add 'auto close brackets' feature.
* Add 'match brackets' feature.
* Make the cursor blink rate customizable.
* Add support for Emacs and Vim key maps.
Change Screen
^^^^^^^^^^^^^
* link:http://code.google.com/p/gerrit/issues/detail?id=3318[Issue 3318]:
Highlight 'Reply' button if there are draft comments on any patch set.
+
If any patch set of the change has a draft comment by the current user,
the 'Reply' button is highlighted.
+
The icons depicting draft comments are removed from the revisions drop-down
list.
* link:http://code.google.com/p/gerrit/issues/detail?id=1100[Issue 1100]:
Publish all draft comments when replying to a change.
+
All draft comments, including those on older patch sets, are published when
replying to a change.
* Show file size increase/decrease for binary files.
* Show uploader if different from change owner.
* Show push certificate status.
* Show change subject as tooltip on related changes list.
+
This helps to identify changes when the subject is truncated in the list.
Side-By-Side Diff
^^^^^^^^^^^^^^^^^
* link:http://code.google.com/p/gerrit/issues/detail?id=3293[Issue 3293]:
Add syntax highlighting for Puppet.
* link:http://code.google.com/p/gerrit/issues/detail?id=3447[Issue 3447]:
Add syntax highlighting for VHDL.
Group Screen
^^^^^^^^^^^^
* link:http://code.google.com/p/gerrit/issues/detail?id=1479[Issue 1479]:
The group screen now includes an 'Audit Log' panel showing member additions,
removals, and the user who made the change.
API
~~~
Several new APIs are added.
Accounts
^^^^^^^^
* Suggest accounts.
Tags
^^^^
* List tags.
* Get tag.
REST API
~~~~~~~~
New REST API endpoints and new options on existing endpoints.
Accounts
^^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#set-username[
Set Username]: Set the username of an account.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#get-detail[
Get Account Details]: Get the details of an account.
+
In addition to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#account-info[
AccountInfo] fields returned by the existing
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#get-account[
Get Account] endpoint, the new REST endpoint returns the registration date of
the account and the timestamp of when contact information was filed for this
account.
Changes
^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#set-review[
Set Review]: Add an option to omit duplicate comments.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#get-safe-content[
Download Content]: Download the content of a file from a certain revision, in a
safe format that poses no risk for inadvertent execution of untrusted code.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#submitted-together[
Get Submitted Together]: Get the list of all changes that will be submitted at
the same time as the change.
* link:http://code.google.com/p/gerrit/issues/detail?id=1100[Issue 1100]:
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#set-review[
Set Review]: Add an option to publish draft comments on all revisions.
Config
^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-config.html#get-info[
Get Server Info]: Return information about the Gerrit server configuration.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-config.html#confirm-email[
Confirm Email]: Confirm that the user owns an email address.
Groups
^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-groups.html#list-group[
List Groups]: Add option to suggest groups.
+
This allows group auto-completion to be used in a plugin's UI.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-groups.html#get-audit-log[
Get Audit Log]: Get the audit log of a Gerrit internal group, showing member
additions, removals, and the user who made the change.
Projects
^^^^^^^^
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-projects.html#run-gc[
Run GC]: Add `aggressive` option to specify whether or not to run an aggressive
garbage collection.
* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-projects.html#list-tags[
List Tags]: Support filtering by substring and regex, and pagination with
`--start` and `--end`.
SSH
~~~
* Add support for ZLib Compression.
+
To enable compression use the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#sshd.enableCompression[
`sshd.enableCompression` setting].
* Add support for hmac-sha2-256 and hmac-sha2-512 as MACs.
Plugins
~~~~~~~
General
^^^^^^^
* Gerrit client can now pass JavaScriptObjects to extension panels.
* New UI extension point for header bar in change screen.
* New UI extension point to password screen.
* New UI extension points to project info screen.
* New UI extension point for pop down buttons on change screen.
* New UI extension point for buttons in header bar on change screen.
* New UI extension point at bottom of the user preferences screen.
* New UI extension point for the 'Included In' drop-down panel.
+
By implementing the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/dev-plugins.html#included-in[
Included In interface], plugins may add entries to the 'Included In' dropdown
menu on the change screen.
* Plugins can extend Gerrit screens with GWT controls.
* Plugins can add custom settings screens.
* Referencing groups in `project.config`.
+
Plugins can refer to groups so that when they are renamed, the project
config will also be updated in this section.
Other
~~~~~
* link:http://code.google.com/p/gerrit/issues/detail?id=3401[Issue 3401]:
Add option to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#sendemail.allowRegisterNewEmail[
disable registration of new email addresses].
* link:http://code.google.com/p/gerrit/issues/detail?id=2061[Issue 2061]
Add Support for `git-upload-archive`.
+
This allows use the standard `git archive` command to create an archive
of the content of a repository.
* Add a background job to automatically abandon inactive changes.
+
The
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#changeCleanup[
changeCleanup] configuration can be set to periodically check for inactive
changes and automatically abandon them.
* Add support for the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/database-setup.html#createdb_db2[
DB2 database].
* link:http://code.google.com/p/gerrit/issues/detail?id=3441[Issue 3441]:
Add support for the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/database-setup.html#createdb_derby[
Apache Derby database].
* Download commands plugin: Use commit IDs for download commands when change refs are hidden.
+
Git has a configuration option to hide refs from the initial advertisement
(`uploadpack.hideRefs`). This option can be used to hide the change refs from
the client. As consequence this prevented fetching changes by change ref from
working.
+
Setting `download.checkForHiddenChangeRefs` in the `gerrit.config` to true
allows the download commands plugin to check for hidden change refs.
* Add a new 'Maintain Server' global capability.
+
Members of a group with the 'Maintain Server' capability may view caches, tasks,
and queues, and invoke the index REST API on changes.
Bug Fixes
---------
* link:http://code.google.com/p/gerrit/issues/detail?id=3499[Issue 3499]:
Fix syntax highlighting of raw string literals in go.
* link:http://code.google.com/p/gerrit/issues/detail?id=3643[Issue 3643]:
Fix syntax highlighting of ES6 string templating using backticks.
* link:http://code.google.com/p/gerrit/issues/detail?id=3653[Issue 3653]:
Correct timezone in sshd log after DST change.
+
When encountering a DST switch, the timezone wasn't updated until
the server was reloaded.
* link:http://code.google.com/p/gerrit/issues/detail?id=3306[Issue 3306]:
Allow admins to read, push and create on `refs/users/default`.
* link:http://code.google.com/p/gerrit/issues/detail?id=3212[Issue 3212]:
Fix failure to run `init` when `--site-path` option is not explicitly given.
* Make email validation case insensitive.
+
While link:https://tools.ietf.org/html/rfc5321#section-2.3.11[
RFC 5321 section 2.3.11] allows for the local-part (the part left of
the '@') of an email address to be case sensitive, the domain portion is
case insensitive according to
link:https://tools.ietf.org/html/rfc1035#section-3.1[RFC 1035 section 3.1].
And in practice, even the local-part is typically case insensitive also.
* `commit-msg` hook: Don't add `Change-Id` line on temporary commits.
+
Commits created with `git commit --fixup` or `git commit --squash` are not
intended to be pushed to Gerrit, and don't need a `Change-Id` line.
+
This also prevents changes from being accidentally uploaded, at least for
projects that have the 'Require Change-Id' configuration enabled.
* link:http://code.google.com/p/gerrit/issues/detail?id=3444[Issue 3444]:
download-commands plugin: Fix clone with commit-msg hook when project name
contains '/'.
* Use full ref name in `refName` attribute of `ref-updated` events.
+
The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/json.html#refUpdate[
refUpdate attribute] in `ref-updated` events did not include the full name
of the ref in the `refName` attribute, i.e. `master` was used instead of
`refs/heads/master`.
+
Support for the new format is added in
link:https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger#GerritTrigger-Version2.15.1%28releasedSept142015%29[
version 2.15.1 of the Jenkins Gerrit Trigger plugin].
+
Users who are unable to upgrade the plugin may instead change the
trigger's branch configuration to type `Path` with a pattern like
`refs/*/master` instead of `Plain` and `master`.
Upgrades
--------
* Upgrade Asciidoctor to 1.5.2
* Upgrade AutoValue to 1.1
* Upgrade Bouncy Castle to 1.52
* Upgrade CodeMirror to 5.7
* Upgrade gson to 2.3.1
* Upgrade guava to 19.0-RC2
* Upgrade gwtorm to 1.14-20-gec13fdc
* Upgrade H2 to 1.3.176
* Upgrade httpcomponents to 4.4.1
* Upgrade Jetty to 9.2.13.v20150730
* Upgrade JGit to 4.1.1.201511131810-r
* Upgrade joda-time to 2.8
* Upgrade JRuby to 1.7.18
* Upgrade jsch to 0.1.53
* Upgrade JUnit to 4.11
* Upgrade Lucene to 5.3.0
* Upgrade Prolog Cafe 1.4.1
* Upgrade servlet API to 8.0.24
* Upgrade Truth to version 0.27