| # Gerrit 2.13 |
| |
| Download: **[2.13.2](https://gerrit-releases.storage.googleapis.com/gerrit-2.13.2.war)** |
| | [2.13.1](https://gerrit-releases.storage.googleapis.com/gerrit-2.13.1.war) |
| | [2.13](https://gerrit-releases.storage.googleapis.com/gerrit-2.13.war) |
| |
| Documentation: **[2.13.2](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.2/index.html)** |
| | [2.13.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.1/index.html) |
| | [2.13](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/index.html) |
| |
| [TOC] |
| |
| ## Release Highlights |
| |
| * Support for Large File Storage (LFS) |
| * Metrics interface |
| * Hooks plugin |
| * Secondary index for accounts |
| * File annotations (blame) in side-by-side diff |
| |
| ## Important Notes |
| |
| ### Schema Changes |
| |
| This release contains schema changes. To upgrade: |
| |
| ``` sh |
| java -jar gerrit.war init -d site_path |
| ``` |
| |
| ### Online Reindexing |
| |
| To use online reindexing for the `changes` secondary index when upgrading |
| to 2.13.x, the server must first be upgraded to 2.8 (or 2.9) and then through |
| 2.10, 2.11 and 2.12. Skipping a version will prevent the online reindexer from |
| working. |
| |
| Gerrit 2.13 introduces a new secondary index for accounts, and this must be |
| indexed offline before starting Gerrit: |
| |
| ``` sh |
| java -jar gerrit.war reindex --index accounts -d site_path |
| ``` |
| |
| If reindexing will be done offline, you may ignore these warnings and upgrade |
| directly to 2.13.x using the following command that will reindex both `changes` |
| and `accounts` secondary indexes: |
| |
| ``` sh |
| java -jar gerrit.war reindex -d site_path |
| ``` |
| |
| ### Hooks Plugin |
| |
| The server side hooks functionality is moved to a core plugin. Sites |
| that make use of server side hooks must install this plugin during site init. |
| |
| ## New Features |
| |
| ### Large File Storage (LFS) |
| |
| Gerrit provides an [extension point](https://gerrit-review.googlesource.com/Documentation/2.13/dev-plugins.html#lfs-extension) |
| that enables development of plugins implementing the |
| [LFS protocol](https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md). |
| |
| By setting |
| [`lfs.plugin`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#lfs.plugin) |
| the administrator can configure the name of the plugin which handles LFS requests. |
| |
| ### Access control for git submodule subscriptions |
| |
| To prevent potential security breaches as described in |
| [issue 3311](https://bugs.chromium.org/p/gerrit/issues/detail?id=3311), it is now |
| only possible for a project to subscribe to a submodule if the submodule |
| explicitly allows itself to be subscribed. |
| |
| Please see the |
| [submodules user guide](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-submodules.html) |
| for details. |
| |
| Note that when upgrading from an earlier version of Gerrit, permissions for |
| any existing subscriptions will be automatically added during the database |
| schema migration. |
| |
| ### Metrics |
| |
| Metrics about Gerrit's internal state can be sent to external |
| monitoring systems. |
| |
| Plugins can provide implementations of the metrics interface to |
| report metrics to different monitoring systems. The following |
| plugins are available: |
| |
| * [JMX](https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-jmx) |
| |
| * [Graphite](https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-graphite) |
| |
| * [Elastic Search](https://gerrit-review.googlesource.com/#/admin/projects/plugins/metrics-reporter-elasticsearch) |
| |
| Plugins can also provide their own metrics. |
| |
| See the |
| [metrics documentation](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/metrics.html) |
| for further details. |
| |
| ### Hooks |
| |
| Server side hooks are moved to the |
| [hooks plugin](https://gerrit-review.googlesource.com/#/admin/projects/plugins/hooks). |
| Sites that make use of server side hooks should install this |
| plugin. After installing the plugin, no additional configuration is needed. |
| The plugin uses the same configuration settings in `gerrit.config`. |
| |
| ### Secondary Index |
| |
| * The secondary index now supports indexing of accounts. |
| |
| The |
| [reindex program](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/pgm-reindex.html) |
| by default reindexes all changes and accounts. A new |
| option allows to explicitly specify whether to reindex changes or accounts. |
| |
| The `suggest.fullTextSearch`, `suggest.fullTextSearchMaxMatches` and |
| `suggest.fullTextSearchRefresh` configuration options are removed. Full text |
| search is supported by default with the account secondary index. |
| |
| * New ssh command to |
| [reindex changes](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/cmd-index-changes.html). |
| |
| ### User Interface |
| |
| * The UI can now be loaded in an iFrame by enabling |
| [`gerrit.canLoadInIFrame`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#gerrit.canLoadInIFrame) |
| in the site configuration. |
| |
| #### Change Screen |
| |
| * [Issue 106](https://bugs.chromium.org/p/gerrit/issues/detail?id=106): |
| Allow to select merge commit's parent for diff base in change screen. |
| |
| * [Issue 3035](https://bugs.chromium.org/p/gerrit/issues/detail?id=3035): |
| Allow to remove specific votes from a change, while leaving the reviewer on the |
| change. |
| |
| * [Issue 3487](https://bugs.chromium.org/p/gerrit/issues/detail?id=3487): |
| Use 'Ctrl-Alt-e' instead of 'e' to open edit mode. |
| |
| #### Diff Screens |
| |
| * Add all syntax highlighting available in CodeMirror. |
| |
| * Improve search experience in diff screen. |
| |
| Ctrl-F, Ctrl-G and Shift-Ctrl-G now bind to the search dialog box provided by |
| CodeMirror's search add-on. Enter and Shift-Enter navigate among the search |
| results from the CodeMirror search, just like they do in a normal browser |
| search. Esc now clears the search result. |
| |
| If the user sets `Render` to `Slow` in the diff preferences and the file is less |
| than 4000 lines (huge), then Ctrl-F, Ctrl-G and Shift-Ctrl-G fall back to the |
| browser search. |
| |
| * [Issue 2968](https://bugs.chromium.org/p/gerrit/issues/detail?id=2968): |
| Allow to go back to change list by keyboard shortcut from diff screens. |
| |
| * Blame annotations. |
| |
| By enabling |
| [`change.allowBlame`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#change.allowBlame), |
| blame annotations can be shown in the side-by-side diff |
| screen gutter. Clicking the annotation opens the relevant change. |
| |
| #### User Preferences |
| |
| * [Issue 989](https://bugs.chromium.org/p/gerrit/issues/detail?id=989): |
| New option to control email notifications. |
| |
| Users can now choose between 'Enabled', 'Disabled' and 'CC Me on Comments I Write'. |
| |
| * New option to control adding 'Signed-off-by' footer in commit message of new changes |
| created online. |
| |
| * New option to control auto-indent width in inline editor. |
| |
| * [Issue 890](https://bugs.chromium.org/p/gerrit/issues/detail?id=890): |
| New diff option to control whether to skip unchanged files when navigating to |
| the previous or the next file. |
| |
| ### Changes |
| |
| In order to avoid potentially confusing behavior, when submitting changes in a |
| batch, submit type rules may not be used to mix submit types on a single branch, |
| and trying to submit such a batch will fail. |
| |
| ### REST API |
| |
| #### Accounts |
| |
| * [Issue 3766](https://bugs.chromium.org/p/gerrit/issues/detail?id=3766): |
| Allow users with the |
| ['ModifyAccount' capability](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/access-control.html#capability_modifyAccount) |
| to get the preferences for other users via the |
| [Get User Preferences endpoint](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-user-preferences). |
| |
| * Rename 'Suggest Account' to |
| ['Query Account'](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#query-account) |
| and add support for arbitrary account queries. |
| |
| The `_more_accounts` flag is set on the last result when there are more results |
| than the limit. The `DETAILS` and `ALL_EMAILS` options may be set to control |
| whether the results should include details (full name, email, username, avatars) |
| and all emails, respectively. |
| |
| * New endpoint: |
| [Get Watched Projects](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-watched-projects). |
| |
| * New endpoint: |
| [Set Watched Projects](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#set-watched-projects). |
| |
| * New endpoint: |
| [Delete Watched Projects](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#delete-watched-projects). |
| |
| * New endpoint: |
| [Get Star Labels from Change](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-stars). |
| |
| * New endpoint: |
| [Update Star Labels on Change](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#set-stars). |
| |
| * New endpoint: |
| [Get OAuth Access Token](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#get-oauth-token). |
| |
| * New endpoint: |
| [List Contributor Agreements](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#list-contributor-agreements). |
| |
| * New endpoint: |
| [Sign Contributor Agreement](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-accounts.html#sign-contributor-agreement). |
| |
| #### Changes |
| |
| * [Issue 3579](https://bugs.chromium.org/p/gerrit/issues/detail?id=3579): |
| Append submitted info to ChangeInfo. |
| |
| * New endpoint: |
| [Move Change](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-changes.html#move-change). |
| |
| #### Groups |
| |
| * Add `-s` as an alias for `--suggest` on the |
| [Suggest Group endpoint](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-groups.html#suggest-group). |
| |
| #### Projects |
| |
| * Add `async` option to the |
| [Run GC endpoint](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#run-gc) |
| to allow garbage collection to run asynchronously. |
| |
| * New endpoint: |
| [List Access Rights](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#get-access). |
| |
| * New endpoint: |
| [Add, Update and Delete Access Rights](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#set-access). |
| |
| * New endpoint: |
| [Create Tag](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#create-tag). |
| |
| * New endpoint: |
| [Get Mergeable Information](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/rest-api-projects.html#get-mergeable-info). |
| |
| ### Plugins |
| |
| * Secure settings |
| |
| Plugins may now store secure settings in `etc/$PLUGIN.secure.config` where they |
| will be decoded by the Secure Store implementation. |
| |
| * Exported dependencies |
| |
| Gson is now an exported dependency. Plugins no longer need to explicitly add |
| a dependency on it. |
| |
| ### Misc |
| |
| * New project option to reject implicit merge commits. |
| |
| The 'Reject Implicit Merges' option can be enabled to prevent non-merge commits |
| from implicitly bringing unwanted changes into a branch. This can happen for |
| example when a commit is made based on one branch but is mistakenly pushed to |
| another, for example based on `refs/heads/master` but pushed to `refs/for/stable`. |
| |
| * New |
| [Add Patch Set capability](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/access-control.html#category_add_patch_set) |
| to control who is allowed to upload a new patch set to an existing change. |
| |
| * [Issue 4015](https://bugs.chromium.org/p/gerrit/issues/detail?id=4015): |
| Allow setting a |
| [comment message](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-upload.html#message) |
| when uploading a change. |
| |
| * Allow to specify |
| [who should be notified by email](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/user-upload.html#notify) |
| when uploading a change. |
| |
| * [Issue 3220](https://bugs.chromium.org/p/gerrit/issues/detail?id=3220): |
| Append approval info to every comment-added stream event and hook. |
| |
| * The `administrateServer` capability can be assigned to groups by setting |
| [`capability.administrateServer`](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#capability.administrateServer) |
| in the site configuration. |
| |
| Configuring this option can be a useful fail-safe to recover a server in the |
| event an administrator removed all groups from the `administrateServer` |
| capability, or to ensure that specific groups always have administration |
| capabilities. |
| |
| * New configuration options to configure JGit repository cache parameters. |
| |
| [core.repositoryCacheCleanupDelay](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#core.repositoryCacheCleanupDelay) |
| and [core.repositoryCacheExpireAfter](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/config-gerrit.html#core.repositoryCacheExpireAfter) |
| can be configured. |
| |
| * Accept `-b` as an alias of `--batch` in the |
| [init program](https://gerrit-documentation.storage.googleapis.com/Documentation/2.13/pgm-init.html). |
| |
| ## Bugfixes |
| |
| * Don't add the same SSH key multiple times. |
| |
| If an already existing SSH key was added, a duplicate entry was added to the |
| list of user's SSH keys. |
| |
| * Respect the 'Require a valid contributor agreement to upload' setting |
| when creating changes via the UI. |
| |
| If a user had not signed a CLA, it was still possible for them to create a new |
| change with the 'Revert' or 'Cherry Pick' button. |
| |
| * Make Lucene index more stable when being interrupted. |
| |
| * Don't show the `start` and `idle` columns in the `show-connections` |
| output when the ssh backend is NIO2. |
| |
| The NIO2 backend doesn't provide the start and idle times, and the |
| values being displayed were just dummy values. Now these values are |
| only displayed for the MINA backend. |
| |
| * [Issue 4150](https://bugs.chromium.org/p/gerrit/issues/detail?id=4150): |
| Deleting a draft inline comment no longer causes the change's `Updated` field to |
| be bumped. |
| |
| * [Issue 4099](https://bugs.chromium.org/p/gerrit/issues/detail?id=4099): |
| Fix SubmitWholeTopic does not update subscriptions. |
| |
| * [Issue 3603](https://bugs.chromium.org/p/gerrit/issues/detail?id=3603): |
| Fix editing a submodule via inline edit. |
| |
| * [Issue 4069](https://bugs.chromium.org/p/gerrit/issues/detail?id=4069): |
| Fix highlights in scrollbar overview ruler not moved when extending the |
| displayed area. |
| |
| * [Issue 3446](https://bugs.chromium.org/p/gerrit/issues/detail?id=3446): |
| Respect the `Skip Deleted` diff preference. |
| |
| * [Issue 3445](https://bugs.chromium.org/p/gerrit/issues/detail?id=3445): |
| Respect the `Skip Uncommented` diff preference. |
| |
| * [Issue 4051](https://bugs.chromium.org/p/gerrit/issues/detail?id=4051): |
| Fix empty `From` email header. |
| |
| * [Issue 3423](https://bugs.chromium.org/p/gerrit/issues/detail?id=3423): |
| Fix intraline diff for added spaces. |
| |
| * [Issue 1867](https://bugs.chromium.org/p/gerrit/issues/detail?id=1867): |
| Remove `no changes made` error case when the only difference between a new |
| commit and the previous patch set of the change is the committer. |
| |
| * [Issue 3831](https://bugs.chromium.org/p/gerrit/issues/detail?id=3831): |
| Prevent creating groups with the same name as a system group. |
| |
| * [Issue 3754](https://bugs.chromium.org/p/gerrit/issues/detail?id=3754): |
| Fix `View All Accounts` permission to allow accounts REST endpoint to access |
| email info. |
| |
| * Make `gitweb.type` default to `disabled` when not explicitly set. |
| |
| Previously the behavior was not documented and it would default to type |
| `gitweb`. In cases where there was no gitweb config at all, this would |
| result in broken links due to `null` being used as the URL. |
| |
| * [Issue 4488](https://bugs.chromium.org/p/gerrit/issues/detail?id=4488): |
| Improve error message when `Change-Id` line is missing in commit message. |
| |
| The error message now includes the sha1 of the commit, so that it is |
| easier to track down which commit failed validation when multiple commits |
| are pushed at the same time. |
| |
| * Don't check mergeability of draft changes. |
| |
| Draft changes can be deleted but not abandoned so there is no way for |
| an administrator to get rid of the them on behalf of the users. This can |
| become a problem when there many draft changes because the mergeability |
| check can be costly. |
| |
| The mergeability check is no longer done for draft changes, but will be |
| done when the draft change is published. |
| |
| * Fix internal server error when plugin-provided file history weblink |
| is null. |
| |
| It is valid for a plugin to provide a null weblink, but doing so resulted |
| in an internal server error. |
| |
| ## Dependency Updates |
| |
| * Add dependency on blame-cache 0.1-9 |
| |
| * Add dependency on guava-retrying 2.0.0 |
| |
| * Add dependency on jsr305 3.0.1 |
| |
| * Add dependency on metrics-core 3.1.2 |
| |
| * Upgrade auto-value to 1.3-rc1 |
| |
| * Upgrade commons-net to 3.5 |
| |
| * Upgrade CodeMirror to 5.17.0 |
| |
| * Upgrade Guava to 19.0 |
| |
| * Upgrade Gson to 2.7 |
| |
| * Upgrade Guice to 4.1.0 |
| |
| * Upgrade gwtjsonrpc to 1.9 |
| |
| * Upgrade gwtorm to 1.15 |
| |
| * Upgrade javassist to 3.20.0-GA |
| |
| * Upgrade Jetty to 9.2.14.v20151106 |
| |
| * Upgrade JGit to 4.5.0.201609210915-r |
| |
| * Upgrade joda-convert to 1.8.1 |
| |
| * Upgrade joda-time to 2.9.4 |
| |
| * Upgrade Lucene to 5.5.0 |
| |
| * Upgrade mina to 2.0.10 |
| |
| * Upgrade sshd-core to 1.2.0 |
| |
| |
| ## Bugfix Releases |
| |
| ### 2.13.3 {#2.12.3} |
| |
| * [Issue 4633](https://bugs.chromium.org/p/gerrit/issues/detail?id=4633): |
| Filter out unrelated projects when getting project watches from index. |
| |
| * [Issue 4848](https://bugs.chromium.org/p/gerrit/issues/detail?id=4848): |
| Upgrade Postgresql JDBC driver to 9.4.1211.jre7. |
| |
| Older versions of Postgresql JDBC driver rely on finalize() methods in |
| order to avoid leaking unclosed database objects. Given finalize |
| methods are unpredictable (no guarantee about prompt execution, if at |
| all), in some high load environments this could lead to a memory leak |
| with millions of JDBC objects pending finalization. |
| |
| * [Issue 4841](https://bugs.chromium.org/p/gerrit/issues/detail?id=4841): |
| Hooks plugin: Make sure `GIT_DIR` environment variable is set in `ref-update` |
| hook. |
| |
| * Hooks plugin: Always return the output from the `ref-update` hook. |
| |
| The output of the `ref-update` hook is now sent back to the client. |
| |
| * Fix migration to schema version 127 on case-sensitive file systems. |
| |
| * Fix internal server error caused by plugin returning null for |
| external included-in. |
| |
| * Fix internal server error in `set-members` command when a group |
| to be added is not visible to the caller. |
| |
| * Fix reindexing change by ssh command. |
| |
| When reindexing a change by ssh, the change was loaded from the |
| index rather than from the database. |
| |
| * Export prolog runtime in plugin API. |
| |
| |
| ### 2.13.2 {#2.13.2} |
| |
| * Allow to delete caches if not empty when initializing site during upgrade. |
| |
| Caches may be stale during upgrade, so the init program now offers to |
| delete them. |
| |
| A new `--delete-caches` option is added to allow force delete of all |
| caches. |
| |
| * [Issue 4797](https://bugs.chromium.org/p/gerrit/issues/detail?id=4797): |
| Fix internal server error in OAuth extension point when E-Mail is not set. |
| |
| * [Issue 4784](https://bugs.chromium.org/p/gerrit/issues/detail?id=4784): |
| Allow to edit user name for OAuth providers that don't expose user names. |
| |
| * [Issue 4627](https://bugs.chromium.org/p/gerrit/issues/detail?id=4627): |
| Fix internal server error in OAuth extension point when user name is not set. |
| |
| * [Issue 4466](https://bugs.chromium.org/p/gerrit/issues/detail?id=4466): |
| Fix deadlock during Lucene index shutdown. |
| |
| * Index account on account creation |
| |
| This prevents creation of new accounts on every logout/login sequence. |
| |
| * Add support for Microsoft Internet Explorer 10 and 11, and Microsoft Edge. |
| |
| * [Issue 4630](https://bugs.chromium.org/p/gerrit/issues/detail?id=4630): |
| Fix server error when navigating up to change while 'Working' is displayed. |
| |
| * [Issue 4631](https://bugs.chromium.org/p/gerrit/issues/detail?id=4631): |
| Read project watches from database. |
| |
| Project watches were being read from the git backend by default, but the |
| migration to git is not yet completed. |
| |
| * [Issue 4632](https://bugs.chromium.org/p/gerrit/issues/detail?id=4632): |
| Fix server error when deleting multiple SSH keys from the Web UI. |
| |
| Attempting to delete multiple keys in parallel resulted in a lock failure |
| when removing the keys from the git backend. |
| |
| * [Issue 4645](https://bugs.chromium.org/p/gerrit/issues/detail?id=4645): |
| Fix malformed account suggestions. |
| |
| If the query contained several query terms and one of the query terms was |
| a substring of 'strong', the suggestion was malformed. |
| |
| * Hooks plugin: Fix incorrect value passed to `--change-url` parameter. |
| |
| The URL was being generated using the change's Change-Id rather than the |
| change number. |
| |
| * Replication plugin: Fix Guava ProvisionException when replicating from slave. |
| |
| * Check for CLA when creating project config changes from the web UI. |
| |
| If contributor agreements were enabled and required for a project, and |
| the user had not signed a CLA, it was still possible to upload changes |
| for review on `refs/meta/config` by making changes in the project access |
| editor and pressing 'Save for Review'. |
| |
| * Fix server errors in 'Set Access' and 'Get Access' REST enpoints. |
| |
| * Stability improvements in event dispatch mechanism. |
| |
| ### 2.13.1 {#2.13.1} |
| |
| * [Issue 4618](https://bugs.chromium.org/p/gerrit/issues/detail?id=4618): |
| Fix internal server error after online reindexing completed. |
| |
| * Fix internal server error when cloning from slaves and not all refs are |
| visible. |
| |
| * Fix JSON deserialization error causing stream event client to no longer receive |
| events. |