Gerrit 2.11 is now available:

Gerrit 2.11 includes the bug fixes done with Gerrit 2.10.1, Gerrit 2.10.2 and Gerrit 2.10.3. 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

Gerrit 2.11 requires a secondary index, which can be created offline by running the reindex program:

  java -jar gerrit.war reindex -d site_path

If the site that is upgraded already has a secondary index, the secondary index can be upgraded online. This is important for large sites since running the reindex program can take a long time and contributes significantly to the downtime that is required for the upgrade.

Gerrit 2.11 supports online reindexing only from the index version 11 which is the index version of Gerrit 2.10. This means if you come from an older release it makes sense to first upgrade to 2.10 and then do the upgrade to 2.11 so that you can profit from online reindexing.

In case you are upgrading from 2.10 it is important to check before the upgrade to 2.11 that the index version of your Gerrit 2.10 site is 11. You can check the index version in $site_path/index/gerrit_index.config. Your Gerrit 2.10 site may run with an older index version (e.g. if online reindexing to index version 11 is still running or if online reindexing to version 11 has failed). In this case you first need to successfully migrate your index version of your Gerrit 2.10 site to 11 and only then start with the 2.11 upgrade. If you start the 2.11 upgrade when the schema version of your Gerrit 2.10 site is older than 11, online reindexing is no longer possible and you need to reindex offline by using the reindex program.

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

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.

WARNING: The Generate HTTP Password capability has been removed.

WARNING: Google will shut down their OpenID service on 20th April 2015. Administrators of sites whose users are registered with Google OpenID accounts should encourage the users to add an alternative identity to their account before this date. Users who do not add an alternative identity before this date will need to create a new account and ask the site administrator to merge it.

WARNING: The Edit Commit Message REST API endpoint is removed

WARNING: The deprecated /query URL is removed and will now return Not Found.

Release Highlights

  • Issue 505: Changes can be created and edited directly in the browser. See the Inline editing section for more details.

  • Many improvements in the new change screen.

  • The old change screen is removed.

New Features

Web UI

Inline Editing

Refer to the inline editing user guide for detailed instructions.

  • New changes can be created directly in the browser via a Create Change button on the project info screen.

  • New follow-up changes can be created via a Follow-Up button on the change screen.

  • File content can be edited in a full screen CodeMirror editor with support for themes and syntax highlighting.

  • The CodeMirror screen can be configured in the same way as the side-by-side diff screen.

  • The file table in the change screen supports seamless navigation to the CodeMirror editor.

  • Edit mode can be started from the side-by-side diff screen with seamless navigation to the CodeMirror editor.

  • The commit message must now be changed in the context of a change edit. The Edit Message button is removed from the change screen.

  • Files can be added, deleted, restored and modified directly in browser.

Change Screen

  • Remove the Edit Message button from the change screen.

    The commit message is now edited using the inline edit feature.

  • Add support for changing parent revision with the Rebase button.

    Using the Rebase button it is now possible to rebase a change onto a different change (on the same destination branch), rather than only onto the head of the destination branch or the latest patch set of the predecessor change.

  • Show the parent commit’s subject as a tooltip.

  • Issue 2541, Issue 2974: Allow the Reply button’s label and tooltip to be configured.

  • Improve file sorting for C and C++ files.

    Header files are now listed before implementation files.

  • Issue 3148: Allow display of colored size bars to be enabled or disabled per user.

    The Show Change Sizes As Colored Bars In Changes Table setting is renamed to Show Change Sizes As Colored Bars and is now used to also control how the change size is shown per file in the file table.

    When enabled (which is the default), the change size per file is shown as a sum of lines added/removed, and also representated by a colored bar showing the proportion of added/removed lines.

    When disabled, the colored bar is not shown and the change size per file is shown in the same way as it used to be in the old change screen.

  • Show changes across all projects and branches in the Same Topic tab.

Side-By-Side Diff

  • New button to switch between side-by-side diff and unified diff.

  • New preference setting to toggle auto-hiding of the diff table header.

    The setting determines whether or not the diff table header with the patch set selection should be automatically hidden when scrolling down more than half of a page.

  • Highlight search results on scrollbar.

    Search results in vim mode are highlighted in the scrollbar with gold colored annotations.

  • Set line length to 72 characters for commit messages.

  • Add syntax highlighting for several new modes:

    • Issue 2848: CSharp

    • Dart

    • Dockerfile

    • GLSL shader

    • Go

    • Objective C

    • RELAX NG

    • Issue 2779: reStructured text

    • Soy

Projects Screen

  • Add pagination and filtering on the branch list page.

  • Add an Edit Config button on the project info page.

    The button creates a new change on the refs/meta/config branch and opens the project.config file in the inline editor.

    This allows project owners to easily edit the project.config file from the browser, which is useful since it is possible that not all configuration options are available in the UI.

REST

Accounts

Changes

Projects

Configuration

Daemon

  • Allow to enable the http daemon when running in slave mode.

    The --enable-httpd option can be used in conjunction with the --slave option to allow clients to fetch from the slave over the http protocol.

    HTTP Authentication may also be used when running in slave mode.

  • Include the submitter’s name in the change message when a change is submitted.

  • Add a message to changes created via cherry pick.

    When a change is cherry-picked to another branch using the cherry-pick action, the message Patch Set <number>: Cherry Picked from branch <name>. is added as a change message on the created change.

  • Don’t send new patch set notification emails for trivial rebases.

SSH

Email

  • Add $change.originalSubject field for email templates.

    GMail threads messages together by subject and ignores the list headers included by Gerrit.

    Site administrators that run servers whose end-user base is mostly on GMail can modify the site’s ChangeSubject.vm template to use $change.originalSubject to improve threading for GMail inboxes.

    The originalSubject field is automatically taken from the existing subject field during first use.

Plugins

General

  • Plugins can listen to account group membership changes.

    The audit log service allows to register listeners to group member added and group member deleted events. A default listener logs these events to the database as before, but additional listeners may now be registered for these events using the GroupMemberAuditListener interface.

  • Plugins can validate ref operations.

    Plugins implementing the RefOperationValidationListener interface can perform additional validation checks against ref creation/deletion operations before they are applied to the git repository.

  • Plugins can provide project-aware top menu extensions

    Plugins can provide sub-menu items within the Projects context. The ${projectName} placeholder is replaced by the project name.

  • Auto register static/init.js as JavaScript plugin.

    When a plugin does not expose Guice Modules explicitly, auto discover and register static/init.js as WebUi extension if found by the plugin content scanner.

  • Plugins can validate outgoing emails.

    Plugins implementing OutgoingEmailValidationListener interface can filter and modify outgoing emails before they are sent.

  • Plugins that provide initialization steps may now use functionality from InitUtil in core Gerrit.

  • Plugins can post change reviews with historic timestamps.

    This allows, for example, to write a plugin that can import a project including review information from another Gerrit server.

  • New extensions in the Java Plugin API:

    • Set/Put topic.

    • Get mergeable status.

    • Issue 461: Get current user.

    • Get file content.

    • Get file diff.

    • Get comments and drafts.

    • Get change edit.

Replication

  • Projects can be specified with wildcard in the start command.

Bug Fixes

Daemon

  • Change Merge topic to Merge changes from topic.

    When multiple changes from a topic are submitted resulting in a merge commit, the title of the merge commit is now Merge changes from topic instead of Merge topic.

  • Fix visibility checks for refs/meta/config.

    Under some conditions it was possible for the refs/meta/config branch to be erroneously considered not visible to the user.

  • Sort list of updated changes in output from push.

  • Issue 2940: Improve warning messages when Change-Id is missing in the commit message.

    • Add a hint to amend the commit after installing the commit-msg hook.

    • Don’t show Suggestion for commit message when Change-Id is missing.

  • Allow to publish draft patch sets even when allowDrafts is false.

    If a user uploaded a change while allowDrafts was enabled, and then it was disabled by the administrator, the uploaded change could not be published and was stuck in the draft state.

  • Issue 3249: Fix server error when checking mergeability of a change.

  • Workaround Guice bug "getPathInfo not decoded".

    Due to Guice issue 745, cloning of a repository with a space in its name was impossible.

  • Issue 2822: Improve Lucene analysis of words linked with underscore or dot.

    Instead of treating words linked with underscore or dot as one word, Lucene now treats them as separate words.

  • Fix support for change~branch~id in query syntax.

Configuration

  • Remove the Generate HTTP Password capability.

    The Generate HTTP Password capability has been removed to close a security vulnerability. Now only administrators are allowed to generate and delete other users' http passwords via the REST or SSH interface.

    It is encouraged to clean up your project.config settings after upgrading.

  • Fix support for multiple footer tokens in tracking ID config.

    Contrary to the documentation, if more than one footer token was specified in the trackingid section, only the first was used.

  • Treat empty hooks.* values as missing, rather than trying to execute the hooks directory.

  • Fix changed-merged hook configuration.

    Contrary to the documentation, the changed-merged hook configuration value was being read from hooks.changeMerged. Fix to use hooks.changeMergedHook as documented.

Web UI

Change List

  • Issue 3304: Always show a tooltip on the label column entries.

Change Screen

  • Issue 3147: Allow to disable muting of common path prefixes in the file list.

    In the file table, parts of the file path that are common to the file previously listed are muted. The purpose of this is to make it easier to see files that all belong under the same path, but some users find it annoying.

    This feature can now be enabled or disabled, per user, with the Mute Common Path Prefixes In File List setting.

  • Issue 3130: Remove special handling of LGTM in review comments

    Typing LGTM in the review cover message no longer automatically selects the highest available Code-Review score.

  • Show a confirmation dialog before deleting a draft change or patch set.

    Previously there was no confirmation and a draft change or revision patch set would be lost if the button was accidentally clicked.

  • Issue 2533: Improve the layout and color scheme of buttons.

    Several improvements have been made:

    • Move Publish and Delete Change/Revision buttons into header.

      If a change/revision is a draft the natural next step is to publish (or delete) it, hence these buttons should be displayed in a more prominent place.

    • Highlight the Publish button in blue.

      If a change is a draft the natural next step is to publish it, hence the Publish button should be highlighted similar to the quick approve button.

    • Fix the border color of buttons on the reply popup.

      The buttons are blue but had white borders, which was inconsistent with the buttons on the change screen.

    • Remove red color for Abandon and Restore buttons.

      There is nothing dangerous about these operations that justifies highlighting the buttons in red color. When the buttons are clicked there is a popup where the user must confirm the operation, so it can still be canceled.

    • Hide quick approve button for draft changes.

      A draft change cannot be submitted, hence quick approving it is not that important. Hiding the quick approve button on draft changes makes space in the header for displaying more important actions such as Publish.

  • Differentiate between conflicts and already merged errors in cherry-pick

    When a cherry-pick operation failed with Cherry pick failed error, there was no way to know the reason for the failure: merge conflict or the commit is already on the target branch. These failures are now differentiated and an appropriate error is reported.

  • Issue 2837: Improve display of long user names for collapsed comments in history.

    If there were several users with long user names with the same prefix, e.g. AutomaticGerritVoterLinux and AutomaticGerritVoterWindows, they would both be shown as AutomaticGerritVo… and users had to expand the comment to see the full user name.

    The ellipsis is now inserted in the middle of the user name so that the start and end of the user name are always visible, e.g. AutomaticG…VoterLinux and AutomaticG…terWindows.

  • Issue 2992: Fix display of review comments for Chrome on Android.

    Chrome for Android has Font Boosting, which caused the review comments to be displayed too large.

  • Issue 2909: Make change owner votes removable.

    If a change owner voted on a change, it was not possible for anyone other than the owner to remove the vote.

  • Preserve topic when cherry-picking.

    When a change is cherry-picked, the topic from the source change is preserved on the newly created change.

  • Issue 3007: Make the selected tab persistent.

    If a change from the Same Topic tab was clicked, the selected tab would reset to the default tab (Related Changes).

  • Left-align column titles in the file list.

  • Increase right margin of download box to make space for scrollbar.

    Under some circumstances the browser’s scrollbar would be shown over the copy-to-clipboard icons in the download dropdown.

  • Display +1 score’s text next to the checkbox for simple boolean labels.

    In the reply box, the text of the label score is displayed on the right hand side when a score is selected, but this was missing for simple boolean labels.

  • Don’t show missing accounts as reviewer suggestions.

  • Show the email address that matched the search in reviewer suggestions.

    When matching accounts by email address against an external account, results now show the email address that matched, not the preferred email address.

  • Fix accidental reviewer selection on slow networks.

  • Issue 3120: Align parent weblinks with parent commits in the commit box.

Side-By-Side Diff

  • Return to normal mode after editing a draft comment.

    Previously it would remain in visual mode.

  • Fix C++ header and source syntax highlighting

    cpp and hpp files were sometimes rendered with C mode and not the extended C++ mode. This prevented keywords like class from being colored by the highlighter.

Project Screen

  • Fix alignment of checkboxes on project access screen.

    The Exclusive checkbox was not aligned with the other checkboxes.

REST API

Changes

  • Remove the administrator restriction on the index change endpoint.

    The endpoint can now be used by any user who has visibility of the change.

  • Only include account ID in responses unless DETAILED_ACCOUNTS option is set.

    The behavior was inconsistent with the documentation. In the default case it was including only the account name, rather than only the account ID.

  • Include revision’s ref in responses.

    The ref of a revision was only returned as part of the fetch info, which is only available if the download commands are installed.

  • Correctly set the limit to the default when no limit is given in the suggest reviewers endpoint.

  • Return correct response from delete draft endpoints.

    When the change.allowDrafts setting is False, it is not allowed to delete draft changes or patch sets.

    In this case the response 405 Method Not Allowed is now returned, instead of 409 Conflict.

Projects

  • Make it mandatory to specify at least one of the --prefix, --match or --regex options in the list projects endpoint.

  • Issue 2706: Do not delete branches concurrently.

    Deleting multiple branches from the UI was resulting in a server error when branches were in the packed-refs.

  • Add retry logic for lock failure when deleting a branch.

  • Issue 3153: Fix handling of project names ending with .git.

    The projects REST API documentation states that the .git suffix will be stripped off the input project name, if present.

    This was working for the Create Project endpoint, but not for any of the others.

Plugins

Replication

  • Create missing repositories on the remote when replicating with the git protocol.

  • Make createMissingRepositories = false take effect on project-created event.

    Previously createMissingRepositories = false would prevent the replication plugin from trying to create a new project when a ref-updated event was fired, but when a project-created event was fired the replication plugin would try to create a project on the remote.

Upgrades

  • Update Antlr to 3.5.2.

  • Update ASM to 5.0.3.

  • Update CodeMirror to 4.10.0-6-gd0a2dda.

  • Update Guava to 18.0.

  • Update Guice to 4.0-beta5.

  • Update GWT to 2.7.

  • Update gwtjsonrpc to 1.7-2-g272ca32.

  • Update gwtorm to 1.14-14-gf54f1f1.

  • Update Jetty to 9.2.9.v20150224.

  • Update JGit to 3.7.0.201502260915-r.58-g65c379e.

  • Update Lucene to 4.10.2.

  • Update Parboiled to 1.1.7.

  • Update Pegdown to 1.4.2.