Gerrit 2.10 is now available:

Gerrit 2.10 includes the bug fixes done with Gerrit 2.9.1, Gerrit 2.9.2, Gerrit 2.9.3 and Gerrit 2.9.4. These bug fixes are not listed in these release notes.

Important Notes

WARNING: This release contains schema changes. To upgrade:

  java -jar gerrit.war init -d site_path

WARNING: When upgrading from an existing site that was initialized with Gerrit version 2.6 to version 2.9.1, the primary key column order will be updated for some tables. It is therefore important to upgrade the site with the init program, rather than only copying the .war file over the existing one.

It is recommended to run the init program in interactive mode. Warnings will be suppressed in batch mode.

WARNING: Upgrading to 2.10.x requires the server be first upgraded to 2.8 (or 2.9) and then to 2.10.x. If you are upgrading from 2.8.x or later, you may ignore this warning and upgrade directly to 2.10.x.

WARNING: The auth.allowGoogleAccountUpgrade setting is no longer supported.

WARNING: When upgrading from version 2.8.4 or older with a site that uses Bouncy Castle Crypto, new versions of the libraries will be downloaded. The old libraries should be manually removed from site’s lib folder to prevent the startup failure described in Issue 3084.

Release Highlights

  • Support for externally loaded plugins.

    Plugins can be implemented in Scala or Groovy using the Groovy provider and Scala provider plugins.

  • Customizable My menu.

    Users can customize the contents of the My menu in the top menu. Administrators can configure the default contents of the menu.

New Features

Web UI


  • Add All-Users project to store meta data for all users.

  • Administrators can customize the default contents of the My menu.

  • Add My > Groups menu entry that shows the list of own groups.

  • Allow UiActions to perform redirects without JavaScript.

Change Screen

  • Display avatar for author, committer, and change owner.

  • Remove message box when editing topic of change.

  • Issue 2573: Add option to quickly add current user as reviewer of a change.

    An Add Me button is displayed next to the Add button when searching for reviewers to add to a change. This allows users to quickly add themselves as a reviewer on the change without having to type their name in the search box.

  • Link project name to dashboard.

  • Issue 2667: Allow to customize Submit button label and tooltip.

Side-by-Side Diff Screen

  • Allow the user to select the syntax highlighter.

  • Add Shift-a keybinding to show/hide left side.

  • Allow to toggle empty pane for added and deleted files.

  • Add syntax highlighting of the commit message.

Change List / Dashboards

  • Remove age operator when drilling down from a dashboard to a query.

  • Issue 2646: Add option to show Change-ID in the change table.

  • Make the own user dashboard available under /dashboard/self.

  • Add R key binding to refresh custom dashboards.

    Account dashboards, search results and the change screen refresh their content when R is pressed. The same binding is added for custom dashboards.

Project Screens

  • Issue 2751: Add support for filtering by regex in project list screen.

  • Disable content merge option if project’s merge strategy is fast forward only.

  • Add branch actions to Projects > Branches view.

User Preferences

  • Users can customize the contents of the My menu from the preferences screen.

  • Issue 2628: Replace Display name in review category preference with a list of options.

    Including new options Show Abbreviated Name to display abbreviated reviewer names and Show Username to show usernames in the change list.

  • Allow to search projects by prefix.

  • Add search fields for number of changed lines.

  • Add suggestions for is:pending and status:pending.

  • Add pending as alias for open.

  • Issue 2545: Support topic:"" to find changes with no topic.

  • Search more fields in the default search query.

    If a search is given with only a text, search over a variety of fields rather than just the project name.


  • Expose SSHD backend in show connections SSH command.

  • Add support for JCE (Java Cryptography Extension) ciphers.



  • Remove kind attribute from REST containers.

  • Support AcceptsPost on non top-level REST collections.

  • Accept HEAD in RestApiServlet.



  • Add change subject to output of change URL on push.

  • Indicate trivial rebase and commit message update on push.

  • Add support for adding review labels on changes during git push.

  • Issue 2634: Add change kind to PatchSetCreatedEvent.



  • Don’t allow empty user name and passwords in InternalAuthBackend.

  • Issue 2596: Add change-owner parameter to gerrit hooks.


  • Support for externally loaded plugins.

    Plugins can be implemented in Scala or Groovy using the Groovy provider and Scala provider plugins.

  • Allow plugins to replace the WebSession implementation.

    Plugins can replace the existing implementation with the statement: DynamicItem.bind(binder(), WebSession.class).to(...); in a module designated as a <Gerrit-HttpModule> in the manifest.

    Just the Cache implementation used for web sessions can be changed by binding to a subclass of the now abstract CacheBasedWebSession which supplies the Cache in the superclass constructor.

    This is a step towards solving web session issues with multi-master.

    The websession-flatfile plugin replaces the built-in Gerrit WebSession implementation with one that uses a flat file based cache.

  • Allow http and ssh plugins to replace the Gerrit-provided DynamicItem.

  • New extension point to listen to usage data published events.

    Plugins implementing the UsageDataPublishedListener can listen to events published about usage data.

  • New extension point to register JGit PreUploadHook.

    Plugins may register PreUploadHook instances in order to get notified when JGit is about to upload a pack. This may be useful for those plugins which would like to monitor usage in Git repositories.

  • New pre-upload validation extension point.

    Plugins implementing the UploadValidationListener interface can perform additional validation checks before any upload operations (clone, fetch, pull). The validation is executed right before Gerrit begins to send a pack back to the git client.

  • New external tool links extension points.

    Plugins can now contribute project links that will be displayed on the project list screen in the Repository Browser column, and revision links that will be shown on the change screen.

  • Allow creation of persistent caches after server is started.

    This enables plugins to create own persistent caches when they are installed.

  • Make gerrit’s HttpServletRequest and HttpServletResponse visible to http plugins.

  • New extensions in the Java Plugin API:

    • Query changes

    • Create/get/list projects

    • Get/set review status

    • Create change

    • Get account

    • Star/unstar changes

    • Check if revision needs rebase

Bug Fixes


  • Use fixed rate instead of fixed delay for log file compression.

    Log file compression was scheduled using a fixed delay. This caused the start times to drift over time. Use a fixed rate instead so that the compression reoccurs at the same time every day.

  • Don’t email project watchers on new draft changes.

    If a draft change is created by pushing to refs/drafts/master, only the reviewers explicitly named on the command line (which may be empty) should be notified of the change. Users watching the project should not be notified, as the change has not yet been published.

  • Fix resource exhaustion due to unclosed LDAP connection.

    When auth.type is set to LDAP (not LDAP_BIND), two LDAP connections are made, but one was not being closed. This eventually caused resource exhaustion and LDAP authentications failed.

Access Permissions

  • Issue 2995: Fix faulty behaviour in BLOCK permission.

    BLOCK can be overruled with ALLOW on the same project, however there was a bug when a child of the above project duplicates the ALLOW permission. In this case the BLOCK would always win for the child, even though the BLOCK was overruled in the parent.

Web UI


  • Issue 2595: Make gitweb redirect to login.

    Gitweb redirects to the login page if the user isn’t currently logged.

  • Issue 2631: Re-arrange info at footer of Gerrit web UI pages.

    Move the Gerrit info link so that there are no links close to the next page link.

  • Only create All-Projects ACL once.

    If refs/meta/config already existed it was overwritten with default configuration if a site administrator ran java -war gerrit.war init -d /some/existing/site --batch.

Change Screen

  • Don’t linkify trailing dot or comma in messages.

    As linkifying trailing dots and trailing commas does more harm than good, we only treat dots and commas as being part of urls, if they are neither followed by whitespace nor occur at the end of a string.

  • Re-enable the Cherry Pick button after canceling the dialog.

    If the dialog was canceled, the button remained disabled and could not be used again.

  • Improve message when removing a reviewer.

  • Issue 527: Preserve line breaks in inline and review comments.

  • Always show No Score as label help for zero votings.

  • Only reset the edited commit message text on cancel.

  • Only include message on quick approve if reply is open.

  • List reviewers with dummy approvals on closed changes.

  • Issue 2890: Enable scrollbars for "Edit Commit Message" TextArea.

  • Use current time instead of submitter time for cherry-picked commits.

    Cherry picking with the submitter time could cause massive clock skew in the Git commit graph if the server was shutdown before the submit could finish, and restarted hours later.

  • Fix exception when clicking on a binary file without being signed in.

Side-By-Side Diff

  • Issue 2970: Fix misalignment of side A and side B for long insertion/deletion blocks.

  • Give B side full width when A side is hidden.

  • Fix scroll alignment when showing hidden A side.

  • Bind Shift-N to search-prev in vim mode.

  • Allow text selection in diff header.

  • Display diff header on mode changes and renames.

  • Document Shift-{Left,Right} in ? help popup.

  • Show [ and ] shortcut keys in nav arrow tooltips.

  • Disable "Render = Slow" mode on files over 4000 lines.

  • Keep keyboard bindings alive after click in padding.

  • Jump to the first change on either side.

  • Expand margin between paragraphs in comments.

  • Include content on identical files with mode change.

User Settings

  • Avoid loading all SSH keys when adding a new one.

Secondary Index / Search

  • Omit corrupt changes from search results.

  • Allow illegal label names from default search predicate.



  • Fix REST API responses for 3xx and 4xx classes.


  • Fix inconsistent behaviour in the add reviewer endpoint

    When adding a single reviewer to a change, it was possible to use the endpoint to add a user who had no visibility to the change or whose account was invalid.



  • Prevent double authentication for the same public key.

    This is a workaround for SSHD-300.

  • Let kill SSH command only kill tasks that are visible to the caller.

  • Require Administrate Server capability to see server summary output from show-caches command.

  • Include all command arguments in SSH log entry.

    The SSH log only included the first argument. This prevented the repository name from being logged when git receive-pack was executed instead of git-receive-pack.


  • Issue 2284: More detailed error message when failing to upload new change.

    When the uploaded change cannot be created on the underlying Git repository, a more descriptive error message is displayed on both client and server side. This allows to troubleshoot internal errors (e.g. JGit lock failures or other causes) and help out in the resolution.

  • Enforce HTTP password checking on gitBasicAuth.

  • Fix missing commit messages on submodule direct pushes.

    The commit message in superproject was missing on submodule’s directly pushed changes.



  • Issue 2895: Fix reload of plugins that use DynamicItem.

  • Invoke StartPluginListener and ReloadPluginListener only after start/reload is fully done.

  • Set Last-Modified on cached Documentation resources.

  • Return HTTP 304 for not modified SmallResources.

  • Fix ChangeListener auto-registered implementations.


  • Move replication logs into a separate file.

  • Promote replication scheduled logs to info.

  • Show replication ID in the log and in show-queue command.


  • Update Guava to 17.0

  • Update Guice to 4.0-beta5

  • Update GWT to 2.6.1

  • Update httpclient to 4.3.4

  • Update httpcore to 4.3.2

  • Update Jcraft SSH to 0.1.51

  • Update Jetty to 9.2

  • Update JGit to

  • Update log4j to 1.2.17

  • Update Servlet API to 8.0.5

  • Update slf4j to 1.7.7

  • Update Velocity to 1.7