| --- |
| title: "Gerrit 2.12 Release" |
| permalink: 2.12.html |
| hide_sidebar: true |
| hide_navtoggle: true |
| toc: true |
| --- |
| Download: **[2.12.9](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.9.war)** |
| | [2.12.8](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.8.war) |
| | [2.12.7](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.7.war) |
| | [2.12.6](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.6.war) |
| | [2.12.5](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.5.war) |
| | [2.12.4](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.4.war) |
| | [2.12.3](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.3.war) |
| | [2.12.2](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.2.war) |
| | [2.12.1](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.1.war) |
| | [2.12](https://gerrit-releases.storage.googleapis.com/gerrit-2.12.war) |
| |
| Documentation: **[2.12.9](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.9/index.html)** |
| | [2.12.8](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.8/index.html) |
| | [2.12.7](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.7/index.html) |
| | [2.12.6](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.6/index.html) |
| | [2.12.5](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.5/index.html) |
| | [2.12.4](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.4/index.html) |
| | [2.12.3](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.3/index.html) |
| | [2.12.2](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.2/index.html) |
| | [2.12.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.1/index.html) |
| | [2.12](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/index.html) |
| |
| ## Release Highlights |
| * New change submission workflows: 'Submit Whole Topic' and 'Submitted Together'. |
| * Support for GPG Keys and signed pushes. |
| |
| ## Important Notes |
| |
| ### Schema Changes |
| This release contains schema changes. To upgrade: |
| |
| ``` sh |
| java -jar gerrit.war init -d site_path |
| ``` |
| |
| #### ‘value too long’ error in schema migration |
| |
| As described in [Issue 4323](https://bugs.chromium.org/p/gerrit/issues/detail?id=4323), |
| a ’value too long for type character varying(255)’ error can occur in the |
| patch_sets table when migrating to schema version 108. |
| |
| This error may occur under some circumstances when running the schema |
| migration from an earlier version of Gerrit. |
| |
| On sites where this occurs, it can be fixed with a manual schema update |
| according to the comments in the issue. |
| |
| #### Manual schema upgrade when updating from 2.12 to 2.12.x |
| When upgrading a site that is already running version 2.12 to 2.12.x, the |
| `patch_sets` table must be manually migrated using the `gerrit gsql` SSH |
| command or the `gqsl` site program. |
| |
| For the default H2 database, execute the command: |
| |
| ``` sql |
| alter table patch_sets modify push_certficate clob; |
| ``` |
| |
| For MySQL, execute the command: |
| |
| ``` sql |
| alter table patch_sets modify push_certficate text; |
| ``` |
| |
| For PostgreSQL, execute the command: |
| |
| ``` sql |
| alter table patch_sets alter column push_certficate type text; |
| ``` |
| |
| For other database types, execute the appropriate equivalent command. |
| |
| Note that the misspelled `push_certficate` is the actual name of the |
| column. |
| |
| When upgrading from a version earlier than 2.12, this manual step is not |
| necessary and should be omitted. |
| |
| ### Online Reindexing |
| |
| 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. |
| |
| ### Bouncy Castle Upgrade |
| 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 [issue 3084](https://code.google.com/p/gerrit/issues/detail?id=3084). |
| |
| ### Solr Index Support |
| The Solr secondary index is no longer supported. With this release |
| the only supported secondary index is Lucene. |
| |
| ### `ref-updated` Event Format Change |
| The format of the `ref-updated` event has changed. Users of the |
| [Jenkins Gerrit Trigger plugin](https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger) |
| with jobs triggering on `ref-updated` should upgrade to at least |
| [version 2.15.1](https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger#GerritTrigger-Version2.15.1%28releasedSept142015%29). |
| 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`. |
| |
| ## New Features |
| |
| ### New Change Submission Workflows |
| * New 'Submit Whole Topic' setting. |
| When the |
| [`change.submitWholeTopic`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#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 |
| [`receive.enableSignedPush`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#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/meta/gpg-keys` branch of the `All-Users` repository. |
| When signed push is enabled, and |
| [`gerrit.editGpgKeys`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#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 |
| [`receive.certNonceSeed`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#receive.certNonceSeed) |
| and |
| [`receive.certNonceSlop`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#receive.certNonceSlop). |
| |
| ### Secondary Index |
| * [Issue 3333](http://code.google.com/p/gerrit/issues/detail?id=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. |
| * [Issue 3291](http://code.google.com/p/gerrit/issues/detail?id=3291): |
| Add `has:edit` search operator to match changes that have edit revisions on them. |
| * Allow configuration of maximum query size. |
| [`index.maxTerms`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#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 |
| [URL aliases](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#urlAlias) |
| 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 |
| * [Issue 3318](http://code.google.com/p/gerrit/issues/detail?id=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. |
| * [Issue 1100](http://code.google.com/p/gerrit/issues/detail?id=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 |
| * [Issue 3293](http://code.google.com/p/gerrit/issues/detail?id=3293): |
| Add syntax highlighting for Puppet. |
| * [Issue 3447](http://code.google.com/p/gerrit/issues/detail?id=3447): |
| Add syntax highlighting for VHDL. |
| |
| #### Group Screen |
| * [Issue 1479](http://code.google.com/p/gerrit/issues/detail?id=1479): Group audit log. |
| 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 |
| * [Set Username](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#set-username): |
| Set the username of an account. |
| * [Get Account Details](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#get-detail): |
| Get the details of an account. |
| In addition to the [AccountInfo](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#account-info) |
| fields returned by the existing |
| [Get Account endpoint](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-accounts.html#get-account), |
| the new REST endpoint returns the registration date of the account and the |
| timestamp of when contact information was filed for this account. |
| |
| #### Changes |
| * [Set Review](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#set-review): |
| Add an option to omit duplicate comments. |
| * [Download Content](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#get-safe-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. |
| * [Get Submitted Together](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#submitted-together): |
| Get the list of all changes that will be submitted at |
| the same time as the change. |
| * [Issue 1100](http://code.google.com/p/gerrit/issues/detail?id=1100): |
| [Set Review](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-changes.html#set-review): |
| Add an option to publish draft comments on all revisions. |
| |
| #### Config |
| * [Get Server Info](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-config.html#get-info): |
| Return information about the Gerrit server configuration. |
| * [Confirm Email](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-config.html#confirm-email): |
| Confirm that the user owns an email address. |
| |
| #### Groups |
| * [List Groups](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-groups.html#list-group): |
| Add option to suggest groups, allowing group auto-completion to be used in a plugin's UI. |
| * [Get Audit Log](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-groups.html#get-audit-log): |
| Get the audit log of a Gerrit internal group, showing member |
| additions, removals, and the user who made the change. |
| |
| #### Projects |
| * [Run GC](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-projects.html#run-gc): |
| Add `aggressive` option to specify whether or not to run an aggressive |
| garbage collection. |
| * [List Tags](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/rest-api-projects.html#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 |
| [`sshd.enableCompression` setting](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#sshd.enableCompression). |
| * 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 |
| [Included In interface](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/dev-plugins.html#included-in), |
| 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. |
| * API |
| * Allow to use `CurrentSchemaVersion`. |
| * Allow to use `InternalChangeQuery.query()`. |
| * Allow to use `JdbcUtil.port()`. |
| * Allow to use GWTORM `Key` classes. |
| |
| ### Other |
| * [Issue 3401](http://code.google.com/p/gerrit/issues/detail?id=3401): |
| Add option to |
| [disable registration of new email addresses](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#sendemail.allowRegisterNewEmail). |
| * [Issue 2061](http://code.google.com/p/gerrit/issues/detail?id=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 |
| [changeCleanup](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/config-gerrit.html#changeCleanup) |
| configuration can be set to periodically check for inactive changes and automatically abandon them. |
| * Add support for the |
| [DB2 database](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/database-setup.html#createdb_db2). |
| * [Issue 3441](http://code.google.com/p/gerrit/issues/detail?id=3441): |
| Add support for the |
| [Apache Derby database](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/database-setup.html#createdb_derby). |
| * 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. |
| |
| ## Bugfixes |
| * Upgrade jsch to 0.1.53 to fix [CVE-2015-4000](https://nvd.nist.gov/vuln/detail/CVE-2015-4000): |
| Weak Diffie-Hellman vulnerability, AKA "Logjam". |
| The Logjam attack allows a man-in-the-middle attacker to downgrade vulnerable TLS |
| connections to 512-bit export-grade cryptography. This allows the attacker to read |
| and modify any data passed over the connection. |
| On February 22, 2018, Github [removed support for weak cryptographic standards](https://githubengineering.com/crypto-removal-notice/). |
| As a result of this, replication to Github over SSH no longer works with |
| diffie-hellman-group1-sha1 or diffie-hellman-group14-sha1 SSH keys. |
| * [Issue 3499](http://code.google.com/p/gerrit/issues/detail?id=3499): |
| Fix syntax highlighting of raw string literals in go. |
| * [Issue 3643](http://code.google.com/p/gerrit/issues/detail?id=3643): |
| Fix syntax highlighting of ES6 string templating using backticks. |
| * [Issue 3653](http://code.google.com/p/gerrit/issues/detail?id=3653): |
| Correct timezone in sshd log after DST change. |
| When encountering a DST switch, the timezone wasn't updated until |
| the server was reloaded. |
| * [Issue 3306](http://code.google.com/p/gerrit/issues/detail?id=3306): |
| Allow admins to read, push and create on `refs/users/default`. |
| * [Issue 3212](http://code.google.com/p/gerrit/issues/detail?id=3212): |
| Fix failure to run `init` when `--site-path` option is not explicitly given. |
| * Make email validation case insensitive. |
| While [RFC 5321 section 2.3.11](https://tools.ietf.org/html/rfc5321#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 |
| [RFC 1035 section 3.1](https://tools.ietf.org/html/rfc1035#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. |
| * [Issue 3444](http://code.google.com/p/gerrit/issues/detail?id=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 [refUpdate attribute](https://gerrit-documentation.storage.googleapis.com/Documentation/2.12/json.html#refUpdate) |
| 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 |
| [version 2.15.1 of the Jenkins Gerrit Trigger plugin](https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger#GerritTrigger-Version2.15.1%28releasedSept142015%29). |
| 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`. |
| * [Issue 3714](https://code.google.com/p/gerrit/issues/detail?id=3714): |
| Improve visibility of comments on dark themes. |
| * Fix highlighting of search results and trailing whitespaces in intraline |
| diff chunks. |
| * Fix server error when listing annotated/signed tag that has no tagger info. |
| * Don't create new account when claimed OAuth identity is unknown. |
| The Claimed Identity feature was enabled to support old Google OpenID accounts, |
| that cannot be activated anymore. In some corner cases, when for example the URL |
| is not from the production Gerrit site, for example on a staging instance, the |
| OpenID identity may deviate from the original one. In case of mismatch, the lookup |
| of the user for the claimed identity would fail, causing a new account to be |
| created. |
| * Suggest to upgrade installed plugins per default during site initialization |
| to new Gerrit version. |
| The default was 'No' which resulted in some sites not upgrading core |
| plugins and running the wrong versions. |
| * [Issue 3698](https://code.google.com/p/gerrit/issues/detail?id=3698): |
| Fix creation of the administrator user on databases with pre-allocated |
| auto-increment column values. |
| When using a database configuration where auto-increment column values are |
| pre-allocated, it was possible that the 'Administrators' group was created |
| with an ID other than `1`. In this case, the created admin user was not added |
| to the correct group, and did not have the correct admin permissions. |
| * [Issue 3018](https://code.google.com/p/gerrit/issues/detail?id=3018): |
| Fix query for changes using a label with a group operator. |
| The `group` operator was being ignored when searching for changes with labels |
| because the search index does not contain group information. |
| * Fix online reindexing of changes that don't already exist in the index. |
| Changes are now always reloaded from the database during online reindex. |
| * Fix reading of plugin documentation. |
| Under some circumstances it was possible to fail with an IO error. |
| |
| ## Documentation Updates |
| * [Issue 412](https://code.google.com/p/gerrit/issues/detail?id=412): |
| Update documentation of `commentlink.match` regular expression to clarify |
| that the expression is applied to the rendered HTML. |
| * Remove warning about unstable change edit REST API endpoints. |
| These endpoints should be considered stable since version 2.11. |
| * Document that `ldap.groupBase` and `ldap.accountBase` are repeatable. |
| |
| ## Dependency Updates |
| * 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 (upgraded to 0.1.54 in 2.12.8) |
| * 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 |
| |
| ## Bugfix Releases |
| |
| ### 2.12.9 |
| |
| * [Issue 10262](https://bugs.chromium.org/p/gerrit/issues/detail?id=10262): |
| Fix validation of `wants` in `git-upload-pack` for protocol v0 stateless transports. |
| |
| See the following section for details. |
| |
| * Upgrade JGit to 4.5.5.201812240535-r. |
| |
| This upgrade includes several versions since 4.1.2 used in Gerrit |
| version 2.12.8. Important fixes are summarized below. Please refer to the |
| corresponding JGit release notes for full details. |
| |
| * [JGit 4.5.5](https://projects.eclipse.org/projects/technology.jgit/releases/4.5.5): |
| |
| * [Issue 10262](https://bugs.chromium.org/p/gerrit/issues/detail?id=10262): |
| Fix validation of `wants` in `git-upload-pack` for protocol v0 stateless transports. |
| |
| AdvertiseRefsHook was not called for `git-upload-pack` in protocol v0 |
| stateless transports, meaning that `wants` were not validated and |
| a user could fetch anything that is pointed to by any ref (using fetch-by-sha1), |
| as long as they could guess the object name. |
| |
| * [JGit 4.5.4](https://projects.eclipse.org/projects/technology.jgit/releases/4.5.4): |
| |
| * Fix LockFile semantics when running on NFS. |
| * Honor trustFolderStats also when reading packed-refs. |
| |
| * [JGit 4.5.3](https://projects.eclipse.org/projects/technology.jgit/releases/4.5.3): |
| |
| * Fix exception handling for opening bitmap index files. |
| |
| * [JGit 4.5.2](https://projects.eclipse.org/projects/technology.jgit/releases/4.5.2): |
| |
| * Fix pack marked as corrupted even if it isn't. |
| |
| * [JGit 4.5.1](https://projects.eclipse.org/projects/technology.jgit/releases/4.5.2): |
| |
| * Don't remove Pack when FileNotFoundException is transient. |
| |
| ### 2.12.8 |
| * Upgrade jsch to 0.1.54 to fix [CVE-2016-5725](https://nvd.nist.gov/vuln/detail/CVE-2016-5725): |
| Directory traversal vulnerability. |
| Versions of jsch prior to 0.1.54 have a directory traversal vulnerability |
| on Windows. When the mode is `ChannelSftp.OVERWRITE`, it allows remote SFTP |
| servers to write to arbitrary files via a `..\` (dot dot backslash) in a |
| response to a recursive `GET` command. |
| For other fixes in jsch since 0.1.53, please refer to the |
| [jsch change log](http://www.jcraft.com/jsch/ChangeLog). |
| * [Issue 5759](https://bugs.chromium.org/p/gerrit/issues/detail?id=5759): |
| Fix `intopic:` search with regular expression. |
| * Fix database connection pool verification. |
| A broken connection could be returned from the connection pool and this |
| caused an internal server error when trying, for example, to read a change |
| from the database. |
| * Do not check visibility of parent when creating project. |
| A project can be visible to a user but not necessarily its parent. To |
| be consistent, a user with create-project permission should be able to |
| create a project with a parent that exists even if the parent is not |
| visible to the user. |
| * Fix merging a merge commit that refers to commits not submitted as changes. |
| * Update `commit-msg` hook to Add `Change-Id` line after `Depends-On:` footer. |
| |
| ### 2.12.7 |
| * [Issue 4930](https://bugs.chromium.org/p/gerrit/issues/detail?id=4930) |
| Allow submit of merge commit of a branch that is not a change. |
| A regression introduced in 2.12.6 prevented a merge commit from being |
| submitted if it merges a branch that is not associated to a change. |
| * Avoid unnecessary group visibility checks in list-groups REST endpoint. |
| The list-groups REST API call checked group visibility even for those |
| groups which were filtered out. In a system with 10-20K of groups, this |
| could cause 30-60 seconds delay when checking if the current user can see |
| a group. |
| * Download Commands plugin: Fix HTTP clone command inconsistency. |
| When cloning a project using HTTP schema, the `/a` in the URL was added |
| only when choosing to clone without the commit hook. Now the URL is the |
| same in both cases. |
| |
| ### 2.12.6 |
| * [Issue 4158](https://bugs.chromium.org/p/gerrit/issues/detail?id=4158): |
| Notice merged commits even if they appear on a different branch. |
| If a change was pushed to a topic branch, and then pushed to another |
| branch for review, merging it did not result in it appearing in the |
| repository. |
| * [Issue 4887](https://bugs.chromium.org/p/gerrit/issues/detail?id=4887): |
| Fix submission of multiple changes by cherry-pick. |
| When submitting multiple changes by cherry-pick, update the merge tip |
| for each change such that each subsequent change is cherry-picked onto |
| the updated tip of the target branch. |
| * [Issue 4647](https://bugs.chromium.org/p/gerrit/issues/detail?id=4647): |
| Fix copying text in Internet Explorer. |
| * Prevent double closing of repository when merging changes. |
| |
| ### 2.12.5 |
| * New preference to enable line wrapping in diff screen and inline editor. |
| * Fix the diff and edit preference dialogs for smaller screens. |
| On smaller screens the options at the bottom of the dialogs would |
| get cut off, making it difficult to change them. |
| * [Issue 4521](https://bugs.chromium.org/p/gerrit/issues/detail?id=4521): |
| Fix internal server error during validation of email addresses. |
| When creating a new account or adding a new email address to an existing |
| account, the email validation crashed. |
| * Lucene stability improvements. |
| Each Lucene index is now written using a dedicated background thread. Lucene |
| threads may not be cancelled, to prevent interruptions while writing. |
| * Don't try to change username that is already set. |
| Since Gerrit version 2.1.4 it is not allowed to change the username once |
| it has been set, and attempting to do so results in an exception. |
| If `ldap.accountSshUserName` is set in the `gerrit.config` using |
| `${userPrincipalName.localPart}` to initialize the username from the user's |
| email address, and then the email address is changed, the username gets |
| resolved to something different and the account manager tried to change it. |
| As a result, an exception was raised and the user could no longer log in. |
| Instead of trying to change the username, a warning is logged. |
| * [Issue 4006](https://bugs.chromium.org/p/gerrit/issues/detail?id=4006): |
| Prevent search limit parameter from exceeding maximum integer value. |
| * Fix internal server error when generating task names. |
| * Print proper names for query tasks in the output of the `show-queue` command. |
| * Double-check change status when auto-abandoning changes. |
| It was possible that changes could be updated in the time between the query |
| results being returned and the change being abandoned. |
| |
| ### 2.12.4 |
| * [Issue 4400](https://bugs.chromium.org/p/gerrit/issues/detail?id=4400): |
| Fix `AlreadyClosedException` in Lucene index. |
| If a Lucene indexing thread was interrupted by an SSH connection being |
| closed, this would also close file handles being used to read the index. |
| Lucene queries are now executed on background threads to isolate them |
| from SSH threads. |
| This may also reduce latency for user dashboards on a multi-core system as |
| each query for the different sections can now run on separate threads and |
| return results when ready. |
| * [Issue 4249](https://bugs.chromium.org/p/gerrit/issues/detail?id=4249): |
| Fix 'Duplicate stages not allowed' error during indexing. |
| * [Issue 4238](https://bugs.chromium.org/p/gerrit/issues/detail?id=4238): |
| Fix 'not found' error when browsing tree in gitweb. |
| The `refs/heads/` prefix was incorrectly being added to `HEAD`, causing a |
| '404 Not Found' error. |
| * Allow to read repositories that do not end with `.git`. |
| * [Issue 4262](https://bugs.chromium.org/p/gerrit/issues/detail?id=4262): |
| Fix GPG push certificate for first patch set of new changes. |
| The GPG certificate was not being set for the first patch set of new |
| changes. |
| * [Issue 4296](https://bugs.chromium.org/p/gerrit/issues/detail?id=4296): |
| Fix internal error when a query does not contain any token. |
| * [Issue 4241](https://bugs.chromium.org/p/gerrit/issues/detail?id=4241): |
| Fix 'Cannot format velocity template' error when sending notification emails. |
| * Fix `sshd.idleTimeout` setting being ignored. |
| The `sshd.idleTimeout` setting was not being correctly set on the SSHD |
| backend, causing idle sessions to not time out. |
| * [Issue 4324](https://bugs.chromium.org/p/gerrit/issues/detail?id=4324): |
| Set the correct uploader on new patch sets created via the inline editor. |
| * Log a warning instead of failing when invalid commentlinks are configured. |
| * [Issue 4136](https://bugs.chromium.org/p/gerrit/issues/detail?id=4136): |
| Fix support for `HEAD` requests in the REST API. |
| Sending a `HEAD` request failed with '404 Not Found'. |
| * Return proper error response when trying to confirm an email that is already |
| used by another user. |
| * [Issue 4318](https://bugs.chromium.org/p/gerrit/issues/detail?id=4318) |
| Fix 'Rebase if Necessary' merge strategy to prevent introducing a duplicate |
| commit when submitting a merge commit. |
| * [Issue 4332](https://bugs.chromium.org/p/gerrit/issues/detail?id=4332): |
| Allow `local` as a valid TLD for outgoing emails. |
| * Bypass hostname verification when `sendemail.sslVerify` is disabled. |
| * [Issue 4398](https://bugs.chromium.org/p/gerrit/issues/detail?id=4398): |
| Replication: Consider ref visibility when scheduling replication. |
| It was possible for refs to be replicated to remotes despite not being |
| visible to groups mentioned in the `authGroup` setting. |
| * [Issue 4036](https://bugs.chromium.org/p/gerrit/issues/detail?id=4036): |
| Fix hanging query when using `is:watched` without authentication. |
| |
| ### 2.12.3 |
| * Fix SSL security issue in the SMTP email relay. |
| The hostname of the SSL socket was not verified. This made the read |
| from the socket insecure since without verifying the hostname it may |
| be [vulnerable to a man-in-the-middle attack](https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf). |
| * [Issue 3895](https://bugs.chromium.org/p/gerrit/issues/detail?id=3895): |
| Fix failure to submit with 'Rebase if Necessary' after changes were reordered |
| with interactive rebase. |
| * [Issue 4052](https://bugs.chromium.org/p/gerrit/issues/detail?id=4052): |
| Fix failure to start server after upgrade from version 2.9.4. |
| * [Issue 3891](https://bugs.chromium.org/p/gerrit/issues/detail?id=3891): |
| Fix query with `label:` operator and zero value. |
| * [Issue 4112](https://bugs.chromium.org/p/gerrit/issues/detail?id=4112): |
| Fix failure to submit changes caused by empty user edit ref. |
| * [Issue 4087](https://bugs.chromium.org/p/gerrit/issues/detail?id=4087): |
| Fix failure to submit change when a branch is created on the change ref. |
| * [Issue 4155](https://bugs.chromium.org/p/gerrit/issues/detail?id=4155): |
| Fix tags REST API to correctly return all tags. |
| * [Issue 4154](https://bugs.chromium.org/p/gerrit/issues/detail?id=4154): |
| Add support for `.team` and several more TLDs in email address validation. |
| Update commons-validator to 1.5.1. |
| * [Issue 4163](https://bugs.chromium.org/p/gerrit/issues/detail?id=4163): |
| Prevent removal of non-voting reviewers on submit of change. |
| * [Issue 2647](https://bugs.chromium.org/p/gerrit/issues/detail?id=2647): |
| Fix usage of `CTRL-C` on change screen. |
| * [Issue 4236](https://bugs.chromium.org/p/gerrit/issues/detail?id=4236): |
| Fix internal error when pushing an amended commit with the `%edit` option. |
| * [Issue 3426](https://bugs.chromium.org/p/gerrit/issues/detail?id=3426): |
| Fix pushing changes with `%base` option or `newChangeForAllNotInTarget` option. |
| * Show 'Submitted Together' tab for changes with same topic. |
| * Improve submit button tooltip messages shown when change is not submittable. |
| * Fix firing of the `topic-changed` hook. |
| * Remove `--dry-run` option from the `Reindex` site program. |
| The implementation of the option was removed, but the option was mistakenly |
| added back to the command and did not actually work. |
| * Print proper task names in the output of the `show-queues` command. |
| * Replication plugin: Double check if a ref is missing locally before deleting |
| from remote. |
| * Show an error message when trying to add a non-existent group to an ACL. |
| |
| ### 2.12.2 |
| * Upgrade Apache commons-collections to version 3.2.2. |
| Includes a fix for a [remote code execution exploit](https://issues.apache.org/jira/browse/COLLECTIONS-5800). |
| * [Issue 3919](https://code.google.com/p/gerrit/issues/detail?id=3919): |
| Explicitly set parent project to 'All-Projects' when a project is created |
| without giving the parent. |
| * Don't add message twice on abandon or restore via ssh review command. |
| When abandoning or reviewing a change via the ssh `review` command, and |
| providing a message with the `--message` option, the message was added to |
| the change twice. |
| * Clear the input box after cancelling add reviewer action. |
| When the action was cancelled, the content of the input box was still |
| there when opening it again. |
| * Fix internal server error when aborting ssh command. |
| * [Issue 3969](https://code.google.com/p/gerrit/issues/detail?id=3969): |
| Fix internal server error when submitting a change with 'Rebase If Necessary' |
| strategy. |
| |
| ### 2.12.1 |
| |
| #### General |
| * Fix column type for signed push certificates. |
| The column type `VARCHAR(255)` was too small, preventing some PGP push |
| certificates from being stored. |
| * Add the `DRAFT_COMMENTS` option to the list changes REST API endpoint |
| and mark it as deprecated. |
| It was removed in version 2.12 because it's not needed any more by the UI, |
| but this caused failures for clients that still use it. |
| Now it is added back, although it does not do anything and is marked as |
| deprecated. |
| * [Issue 3669](https://code.google.com/p/gerrit/issues/detail?id=3669): |
| Fix schema migration when migrating to 2.12.x directly from a version |
| earlier than 2.11. |
| * [Issue 3733](https://code.google.com/p/gerrit/issues/detail?id=3733): |
| Correctly detect symlinked log directory on startup. |
| If `$site_path/logs` was a symlink, the server would not start. |
| * [Issue 3871](https://code.google.com/p/gerrit/issues/detail?id=3871): |
| Throw an explicit exception when failing to load a change from the database. |
| If a change could not be loaded from the database, for example if it was |
| manually removed from the changes table but references to it were remaining |
| in other tables, a null change was returned which would then lead to an |
| 'Internal Server Error' that was difficult to track down. Now an error is |
| raised earlier which will help administrators to find the root cause. |
| * [Issue 3743](https://code.google.com/p/gerrit/issues/detail?id=3743): |
| Use submitter identity as committer when using 'Rebase if Necessary' merge |
| strategy. |
| When submitting a change that required rebase, the committer was being |
| set to 'Gerrit Code Review' instead of the name of the submitter. |
| * [Issue 3758](https://code.google.com/p/gerrit/issues/detail?id=3758): |
| Fix serving of static resources when deployed in application container. |
| When deployed in a container, for example Tomcat, it was not possible to |
| load the UI because static content could not be loaded from the WAR file. |
| * [Issue 3790](https://code.google.com/p/gerrit/issues/detail?id=3790): |
| Fix documentation link when deployed in application container. |
| When deployed in a container, for example Tomcat, the 'Documentation' menu |
| was missing. |
| * [Issue 3786](https://code.google.com/p/gerrit/issues/detail?id=3786): |
| Fix SQL statement syntax in schema migration. |
| An extra semicolon was preventing migration from 2.11.x to 2.12 when using |
| an Oracle database. |
| * Send email using email queue instead of the default queue. |
| Some emails sent asynchronously were already being sent using that queue |
| but some were not. This was confusing for a gerrit administrator because |
| if there is a build up of `send-email` tasks in the queue, he would |
| think that increasing `sendemail.threadPoolSize` would help but it did not |
| because some of the email were sent using the default queue which is |
| configurable using `execution.defaultThreadPoolSize`. |
| * Fix XSRF token cookie to honor `auth.cookieSecure` setting. |
| * [Issue 3767](https://code.google.com/p/gerrit/issues/detail?id=3767): |
| Fix replication of first patch set for new changes. |
| When new changes were pushed from the command line, the first patch |
| set did not get replicated to destinations. |
| * [Issue 3771](https://code.google.com/p/gerrit/issues/detail?id=3771): |
| Remove `index.defaultMaxClauseCount` configuration option. |
| When `index.maxTerms` was either not set (thus no limit) or set to a value |
| higher than `index.defaultMaxClauseCount` it was possible that viewing the |
| related changes tab could cause a 'Too many clauses' error for changes that |
| have a lot of related changes. |
| The `index.defaultMaxClauseCount` configuration option is removed, and the |
| existing `index.maxTerms` is reused. The default value of `index.maxTerms` |
| is reduced from 'no limit' to 1024. |
| * [Issue 3919](https://code.google.com/p/gerrit/issues/detail?id=3919): |
| Explicitly set parent project to 'All-Projects' when a project is created |
| without giving the parent. |
| * [Issue 3948](https://code.google.com/p/gerrit/issues/detail?id=3948): |
| Fix submit of project parent updates on `refs/meta/config`. |
| When submitting a change on `refs/meta/config` to update a project's parent, |
| the error 'The change must be submitted by a Gerrit administrator' was being |
| displayed even when the submitter was an admin. The submit was successful |
| when clicking 'Submit' a second time. |
| * [Issue 3811](https://code.google.com/p/gerrit/issues/detail?id=3811): |
| Fix submittability of merge commits that resolve merge conflicts. |
| If a series of changes contained a change that conflicted with the destination |
| branch, but the conflict was solved by a merge commit at the tip of the |
| series, the series was not submittable. |
| * [Issue 3883](https://code.google.com/p/gerrit/issues/detail?id=3883): |
| Respect the `core.commentchar` setting from `.gitconfig` in `commit-msg` hook. |
| |
| #### UI |
| * [Issue 3894](https://code.google.com/p/gerrit/issues/detail?id=3894): |
| Fix display of 'Related changes' after change is rebased in web UI: |
| * [Issue 3071](https://code.google.com/p/gerrit/issues/detail?id=3071): |
| Fix display of submodule differences in side-by-side view. |
| * [Issue 3718](https://code.google.com/p/gerrit/issues/detail?id=3718): |
| Hide avatar images when no avatars are available. |
| The UI was showing a transparent empty image with a border. |
| * [Issue 3731](https://code.google.com/p/gerrit/issues/detail?id=3731): |
| Fix syntax higlighting of tcl files. |
| * [Issue 3863](https://code.google.com/p/gerrit/issues/detail?id=3863): |
| Fix display of active row marker in tag list. |
| Clicking on one of the rows would cause the tag name to disappear. |
| * [Issue 1207](https://code.google.com/p/gerrit/issues/detail?id=1207): |
| Fix keyboard shortcuts for non-US keyboards on side-by-side diff screen. |
| The forward/backward navigation keys `[` and `]` only worked on keyboards where |
| these characters could be typed without using any modifier key (like CTRL, ALT, |
| etc..). |
| Note that the problem still exists on the unified diff screen. |
| * Improve tooltip on 'Submit' button when 'Submit whole topic' is enabled |
| and the topic can't be submitted due to some changes not being ready. |
| |
| #### Plugins |
| * [Issue 3821](https://code.google.com/p/gerrit/issues/detail?id=3821): |
| Fix repeated reloading of plugins when running on OpenJDK 8. |
| OpenJDK 8 uses nanotime precision for file modification time on systems that |
| are POSIX 2008 compatible. This leads to precision incompatibility when |
| comparing the plugin's JAR file timestamp, resulting in the plugin being |
| reloaded every minute. |
| * [Issue 3741](https://code.google.com/p/gerrit/issues/detail?id=3741): |
| Fix handling of merge validation exceptions emitted by plugins. |
| If a plugin raised an exception, it was reported to the user as 'Change is |
| new', rather than 'Missing dependency'. |
| * Allow plugins to get the caller in merge validation requests. |
| Plugins that implement the `MergeValidationListener` interface now get the |
| caller (the user who initiated the merge) in the `onPreMerge` method. |
| Existing plugins that implement this interface must be adapted to the new |
| method signature. |
| * [Issue 3892](https://code.google.com/p/gerrit/issues/detail?id=3892): |
| Allow plugins to suggest reviewers based on either change or project |
| resources. |
| |
| #### Documentation |
| * Update documentation of `commentlink` to reflect changed search URL. |
| * Add missing documentation of valid `database.type` values. |
| |
| #### Upgrades |
| * Upgrade JGit to 4.1.2.201602141800-r. |