There are no schema changes from 2.8.1.

Lucene Index

  • Support committing Lucene writes within a fixed interval.

    The ramBufferSize and maxBufferedDocs options control how often the writer is flushed, but this does not fsync files on disk and thus might not be permanent, particularly in a machine under heavy load.

    As a result, commits to the index may not be completed, and updates may be lost if the server goes down.

    A new option commitWithin is added, to control how frequently the indexes are committed.


  • Only add "cherry picked from" when cherry picking a merged change.

    The "(cherry picked from commit …)" line was being added in the commit message when cherry picking from closed changes, which included those that were abandoned.

  • Issue 2513: Improve the "This patchset was cherry picked" message.

    When cherry-picking a change, the message "This patchset was cherry picked to change: <Change-Id>" was added as a message on the change. This was not very useful as the Change-Id is the same on the newly created change.

    The message is changed to "This patchset was cherry picked to branch <branch name> as commit <SHA1>".

  • Fix PUSH permission check for draft changes.

    It was not possible to block pushes to the refs/drafts namespace.

  • Don’t allow project owners to create branches if create is blocked.

    Project owners were able to create branches through the WebUI, REST and SSH even when the create reference permission was actually blocked for them.

  • Issue 2397: Remove quotes and trailing period from "topic edited" messages.

    The quotes and trailing period were causing linkification to fail for topics that were set to a URL.

  • Check if user can read HEAD commit when resolving detached HEAD.

    If HEAD was detached the GetHead REST endpoint refused to resolve HEAD when the user was not a project owner.

  • Issue 2392: Keep status:closed limit below MySQL Connector/J’s hard limit.

    Since MySQL Connector/J 5.1.21 does not allow limits above 50M rows and aborts them with setMaxRows() out of range, we cannot use MAX_VALUE as limit for plain status:closed queries.

  • Fix IllegalArgumentException when running query with limit:0 on secondary index.

    Running a query with limit:0 when the secondary index is enabled was causing an internal server error.

  • Issue 2331: Make sure change-merged event contains correct patch set number.

    When a change is submitted with the cherry-pick strategy, or when the change is rebased with the "rebase if necessary" strategy, a new patch set is created. The newly created patch set was not being set in the change-merged event.

  • Guard against diff.mnemonicprefix in commit-msg hook.

    When diff.mnemonicprefix was enabled in the git config, committing changes with git commit -v caused the diff to be included in the generated commit message.

  • Issue 2453: Fix submit rule evaluation for non blocking labels.

    Putting a negative score on a label configured as NoBlock was causing the submit button to be disabled.

  • Issue 2441: Allow to create branch with new commits.

    Branches could not be created with a new commit which is not on other branches already.

  • Fix incompatibility between "Rebase if Necessary" and "copy scores".

    When a project was set up with "Rebase if Necessary", one of its labels had copyAllScoresOnTrivialRebase or copyMaxScore, and a change that actually needed a trivial rebase was submitted, Gerrit first rebased the change, and in the process copied the approval for the label. It then copied all the approvals, including the one already copied, which resulted in a constraint violation on the database.

  • Add Implementation-Vendor default manifest entry for plugins.

    In buck, the java_binary rule merges manifest entries from dependent JARs unless the input JAR possesses these entries itself. This was causing some plugins to display the wrong vendor information if they had dependency on another JAR file that provided a Implementation-Vendor value.

  • Issue 2498: Handle null commits when updating submodules.

    In some edge cases it was possible that a null commit would exist, and this caused a crash when updating submodules.

  • Update and insert comments/approvals in a single step.

    When a review includes both new label scores and updates to existing label scores, use upsert to record them all at the same time, rather than in separate update and insert operations.

  • Issue 2374: Prevent duplicate commits in same project when uploading to refs/changes/n.

    Under certain circumstances, when pushing to refs/changes/n, the same commit could be pushed onto multiple changes even if the changes were on the same branch.

  • Remove dependency on joda time library in gerrit launcher.

    The joda time library was being unnecessarily packaged in the root of the gerrit.war file.

Change Screen / Diff Screen

  • Issue 2398: Enable syntax highlighting for Groovy, Clojure, Lisp, Ruby and Perl.

  • Issue 2416: Fix copy functionality in Firefox and Safari.

    Ctrl-C/Cmd-C was activating the insert comment feature, and preventing the browser from copying the selected text to the clipboard.

  • Issue 2428: Fix truncation of long lines in side-by-side diff.

    Lines whose length exceeded the width of the window were being truncated and only shown fully after zooming out/in on the browser.

  • Fix handling of the enter key when editing the topic.

    The enter key was causing the file diff view to open, instead of confirming the topic edit.

  • Fix wrong button being passed to the revert action.

    The action was using the cherry-pick button instead of the revert button.

  • Improve the error message shown when cherry picking a change fails.

    The error message "Could not create merge commit during cherry pick" was confusing for users, and is replaced with simply "Cherry pick failed".

  • Add newline on commit messages created by cherry picking a change in the UI or via the REST API.

    If a commit was cherry-picked from the UI or via the REST API, the trailing newline on the end of the commit message was lost.

  • Issue 2405: Update change to invalidate cache after deletion of draft revision.

    When a non-current draft patch set was deleted no update of the change was made, causing the change screen to not work properly because it relied on cached data.

  • Extend change screen’s horizontal bars to full width.

    This allows the title of the change message to have some padding within the bar.

  • Fix tab alignment to be correct width in side-by-side diff.

    This fixes the tab width to be the user’s preference, rather than 1 + user’s preference when show tabs is enabled.

  • Fill the browser width in side-by-side diff.

    Filling the browser available space with each side of the diff at 50% size allows the user to more easily view long lines if they have a wide display, and better fit on more narrow displays by splitting the available width at 50%.

  • Fire comment-added stream event even when mail notification is not sent.

    Unchecking the "and send email" option on the change screen prevented the comment-added event from being sent to the event stream.

  • Issue 2493: Set uploader to current user in patchset-created event upon rebasing a change in the UI.

    When a change was rebased from the change screen, the uploader field of the patchset-created event was incorrectly set to the original change uploader, rather than the user that performed the rebase.

  • Display a warning instead of an error when the intraline diff times out.

    Displaying an error was confusing for users and administrators.

  • Issue 2514: Display an error message when commentlink regex is invalid.

    If a commentlink was configured with an invalid regular expression, for example an expression that is valid in Java but not in JavaScript, the change screen failed to load.

    Now, an error message will be displayed in the UI.


  • Support for nio2 backend is removed.

    The nio2 backend is broken in MINA SSHD. Support is removed until the next release of MINA SSHD in which it is fixed.

  • Issue 2424: Add descriptions on commands that are disabled in slave mode.

    Commands that are disabled on a server running in slave mode were being listed with an empty description.

  • Remove obsolete commands from slave mode commands list.

    The approve and replicate commands, which no longer exist, were still being listed in the available commands shown when running the ssh gerrit command without any arguments on a server running in slave mode.

  • Remove including replication from the show-queue command description.

    The replication command is provided by the replication plugin, so it is no longer relevant to mention this in the description of a core command.

  • Fix aliasing of SSH commands.

  • Issue 2515: Fix internal server error when updating an existing label with gerrit review.

Replication Plugin

  • Never replicate automerge-cache commits.

    Commits in the automerge-cache namespace are used on the master to improve performance of the diff UI. They are not needed on remote mirrors and it is wasteful to replicate them.

  • Issue 2420: Fix failure to create missing remote repository via git:// protocol.

    When replicating to a mirror over the anonymous git:// protocol and the repository did not exist on the remote (i.e. if the remote was offline when the repository was originally created), the replication failed with a "remote repository error", rather than the expected "no repository".

  • Improve info logging related to repository creation and deletion, and differentiate between local and remote repository errors.

  • Update documentation to clarify replication of refs/meta/config when refspec is all refs.


  • JGit is upgraded to


  • Add missing documentation of the secondary index configuration.

    Document that open and closed changes are indexed in separate indexes, and for Lucene indexes the RAM buffer size and maximum buffered documents can be configured.

  • Correct the Gerrit download link.

    The link on the documentation index was pointing to the Google Code page, which has not been used for some time.

  • Correct the description of the revisions field in the REST API’s ChangeInfo entity.

  • Add a link from the plugin documentation to the validation listeners API documentation.

  • Remove double border around code snippets.

  • Add border around tables.