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. 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`] 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 byt 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 change edits 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 be written to allow runtime reconfiguration of various Lucene performance related parameters. * 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]: Downloads 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]: Returns 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]: Gets 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 '/'. * Include full ref names in `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, i.e. `master` instead of `refs/heads/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