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 theproject.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
-
Add new Suggest Account endpoint.
Changes
-
The Edit Commit Message endpoint is removed in favor of the new Change commit message in Change Edit and Publish Change Edit endpoints.
-
Add new Check Change endpoint.
In the past, Gerrit bugs, lack of transactions, and unreliable NoSQL backends have at various times produced a bewildering variety of corrupt states.
This endpoint can be used to detect, explain, and repair some of these possible states of a change.
-
Add new Get Revision Actions endpoint.
-
Add
CHANGE_ACTIONS
option on the Get Change Detail endpoint.
Change Edits
Several new endpoints are added to support the inline edit feature.
Projects
-
Add new Delete Branches endpoint.
-
Add filtering and pagination options on the List Branches endpoint.
-
Add new List Tags endpoint.
-
Add new Get Tag endpoint.
Configuration
-
Add support for HTTP external ID header.
This can be used when authenticating with a federated identity token from an external system, e.g. GitHub’s OAuth 2.0 authentication.
-
Add
copyAllScoresIfNoChange
setting for labels.Allows to copy scores forward when a new patch set is uploaded that has the same parent tree, code delta, and commit message as the previous patch set.
-
Issue 2786: Allow non-administrators to modify user accounts.
A new global capability, Modify Account, which allows the granted group members to modify user account settings via the
set-account
SSH command.Modification of users' SSH keys is still restricted to administrators.
-
Add support for LDAP connection pooling.
-
Issue 699: Allow to limit max number of changes pushed in a batch.
Can be overridden by members of groups that are granted the Batch Changes Limit capability.
-
Allow to disable reverse DNS lookup.
This option can be set to improve push time from hosts without a reverse DNS entry.
-
Allow to load the project cache at server startup.
-
Allow members of groups granted the AccessDatabase capability to view metadata refs.
-
Allow to enable full text search in memory for review suggestions.
The maximum number of reviewers evaluated can be limited with suggest.fullTextSearchMaxMatches.
-
Allow to provide an alternative secure store implementation.
-
Issue 1195: Allow projects to be configured to create a new change for every uploaded commit that is not in the target branch.
-
Allow to configure options to pass to the daemon.
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
-
Add new commands
logging ls-level
andlogging set-level
to show and set the logging level at runtime. -
Issue 602: Add
--json
option to thereview
SSH command.Review input can be given to the
review
command in JSON format corresponding to the REST API’s ReviewInput entity. -
Issue 2824: Add
--rebase
option to thereview
SSH command. -
Add
--clear-http-password
option to theset-account
SSH command. -
Add
--preferred-email
option to theset-account
SSH command.
-
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.
Secondary Index / Search
-
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 thetrackingid
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 usehooks.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 of409 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 onproject-created
event.Previously
createMissingRepositories = false
would prevent the replication plugin from trying to create a new project when aref-updated
event was fired, but when aproject-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.