Download: 2.12.7 | 2.12.6 | 2.12.5 | 2.12.4 | 2.12.3 | 2.12.2 | 2.12.1 | 2.12

Documentation: 2.12.7 | 2.12.6 | 2.12.5 | 2.12.4 | 2.12.3 | 2.12.2 | 2.12.1 | 2.12

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:

  java -jar gerrit.war init -d site_path

‘value too long’ error in schema migration

As described in Issue 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:

  alter table patch_sets modify push_certficate clob;

For MySQL, execute the command:

  alter table patch_sets modify push_certficate text;

For PostgreSQL, execute the command:

  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.

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 with jobs triggering on ref-updated should upgrade to at least 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.

New Features

New Change Submission Workflows

  • New ‘Submit Whole Topic’ setting.

    When the 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 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 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 and receive.certNonceSlop.

Secondary Index

  • 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.

  • Issue 3291: Add has:edit search operator to match changes that have edit revisions on them.

  • Allow configuration of maximum query size.

    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 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: 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: 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

Group Screen

  • Issue 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: Set the username of an account.

  • Get Account Details: Get the details of an account.

    In addition to the AccountInfo fields returned by the existing 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

  • Set Review: Add an option to omit duplicate comments.

  • 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.

  • Get Submitted Together: Get the list of all changes that will be submitted at the same time as the change.

  • Issue 1100: Set Review: Add an option to publish draft comments on all revisions.

Config

Groups

  • List Groups: Add option to suggest groups, allowing group auto-completion to be used in a plugin’s UI.

  • 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: Add aggressive option to specify whether or not to run an aggressive garbage collection.

  • 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.

  • 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, 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: Add option to disable registration of new email addresses.

  • 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 changeCleanup configuration can be set to periodically check for inactive changes and automatically abandon them.

  • Add support for the DB2 database.

  • Issue 3441: Add support for the 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.

Bugfixes

  • Issue 3499: Fix syntax highlighting of raw string literals in go.

  • Issue 3643: Fix syntax highlighting of ES6 string templating using backticks.

  • 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.

  • Issue 3306: Allow admins to read, push and create on refs/users/default.

  • Issue 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 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, 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: 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 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.

    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: 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: 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: 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: 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

  • 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.8 {#2.12.8}

  • Issue 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 {#2.12.7}

  • Issue 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 {#2.12.6}

  • Issue 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: 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: Fix copying text in Internet Explorer.

  • Prevent double closing of repository when merging changes.

2.12.5 {#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: 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: 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 {#2.12.4}

  • Issue 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: Fix ‘Duplicate stages not allowed’ error during indexing.

  • Issue 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: 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: Fix internal error when a query does not contain any token.

  • Issue 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: 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: 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 Fix ‘Rebase if Necessary’ merge strategy to prevent introducing a duplicate commit when submitting a merge commit.

  • Issue 4332: Allow local as a valid TLD for outgoing emails.

  • Bypass hostname verification when sendemail.sslVerify is disabled.

  • Issue 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: Fix hanging query when using is:watched without authentication.

2.12.3 {#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.

  • Issue 3895: Fix failure to submit with ‘Rebase if Necessary’ after changes were reordered with interactive rebase.

  • Issue 4052: Fix failure to start server after upgrade from version 2.9.4.

  • Issue 3891: Fix query with label: operator and zero value.

  • Issue 4112: Fix failure to submit changes caused by empty user edit ref.

  • Issue 4087: Fix failure to submit change when a branch is created on the change ref.

  • Issue 4155: Fix tags REST API to correctly return all tags.

  • Issue 4154: Add support for .team and several more TLDs in email address validation.

    Update commons-validator to 1.5.1.

  • Issue 4163: Prevent removal of non-voting reviewers on submit of change.

  • Issue 2647: Fix usage of CTRL-C on change screen.

  • Issue 4236: Fix internal error when pushing an amended commit with the %edit option.

  • Issue 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 {#2.12.2}

  • Upgrade Apache commons-collections to version 3.2.2.

    Includes a fix for a remote code execution exploit.

  • Issue 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: Fix internal server error when submitting a change with ‘Rebase If Necessary’ strategy.

2.12.1 {#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: Fix schema migration when migrating to 2.12.x directly from a version earlier than 2.11.

  • Issue 3733: Correctly detect symlinked log directory on startup.

    If $site_path/logs was a symlink, the server would not start.

  • Issue 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: 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: 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: Fix documentation link when deployed in application container.

    When deployed in a container, for example Tomcat, the ‘Documentation’ menu was missing.

  • Issue 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: 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: 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: Explicitly set parent project to ‘All-Projects’ when a project is created without giving the parent.

  • Issue 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: 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: Respect the core.commentchar setting from .gitconfig in commit-msg hook.

UI

  • Issue 3894: Fix display of ‘Related changes’ after change is rebased in web UI:

  • Issue 3071: Fix display of submodule differences in side-by-side view.

  • Issue 3718: Hide avatar images when no avatars are available.

    The UI was showing a transparent empty image with a border.

  • Issue 3731: Fix syntax higlighting of tcl files.

  • Issue 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: 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: 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: 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: 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.