Gerrit 2.1.3 is now available in the usual location:

Schema Change

WARNING This release contains multiple schema changes. To upgrade:

  java -jar gerrit.war init -d site_path

New Features

Web UI

  • issue 289 Remove reviewers (or self) from a change

    Project and change owners can now remove any reviewer from a change by clicking an "X" next to their name in the approval table. Individual users can also remove themselves from any change. This feature permits users to stop getting notified about a change they no longer have an interest in, but had commented on previously.

  • issue 124 Index changes by external issue tracking id numbers

    Changes can be searched for by an external issue tracking system’s id numbers. Site administrators can configure trackingid sections in gerrit.config to parse and extract issue tracking links from a commit message’s footer, and have them indexed by Gerrit. Users can search for relevant changes using the search operator tr: or bug:, for example tr:432181 or bug:JIRA-42. Administrators can index existing change records using the ScanTrackingIds program.

  • List branches/tags containing a merged change

    Merged change pages now display a new expandable section, Included In, listing all branches and tags that contain the change.

  • issue 391 Reduce clicks need to approve and submit

    Users who have Submit +1 permission for a change can now click Publish Comments and Submit on the publish comments screen, combining the Publish Comments and Submit Patch Set n actions into a single click.

  • Simplify setup of non-range access such as Submit

    If an access control doesn’t really make sense as a range of values, Gerrit now displays only one box to select the maximum permitted value from, rather than two boxes to set the min/max.

  • Make Admin > Projects UI accessible to all users

    All projects that are visible to the current user are now listed in the Admin > Projects page, as are the project’s Branches and Access tabs. Editing is obviously disabled, unless the user has owner level access to the project, or one of its branches.

Access Controls

  • Branch-level read access is now supported

    Project owners/administrators can now use the access tab to control which groups can read certain branches, enabling hidden branches within a more widely visible project. Additionally, replication.config honors these settings through the authGroup variable, allowing a server administrator to limit which branches are replicated to certain mirrors.

  • issue 273 Inherit project permissions from more than just All Projects

    Projects can now be organized into an inheritance hierarchy, allowing administrators to cluster common access rules for different groups of projects. The create-project command learned a new --parent option to set the hierarchy immediately.

  • auth.allowedOpenID can limit which providers can be used

    Administrators can now set auth.allowedOpenID in gerrit.config to restrict which OpenID provider(s) a user can use to register for an account. This may be useful to restrict login to only the organization’s local provider, or a single trusted 3rd party.

  • Branch-level access control is now inherited by default

    Previously branch level access controls were exclusive, locking out all other groups that may have been inherited from All Projects, or through a wildcard like refs/heads/*. Branch access is now inherited by default, but the old exclusive behavior can be obtained by prefixing the reference with -.

SSH Commands

  • create-account: Permit creation of batch user accounts over SSH

  • issue 269 Enable create-project for non-Administrators

  • ls-projects: New -b option displays the sha1 of each branch

  • ls-projects: New -t option shows the project hierarchy

  • gerrit show-queue is now accessible to all users

    Results are filtered to display only queue entries that are operating on projects the user is permitted to see. Replication URLs are masked for non-admin users, and instead display the remote name from the replication.config file.

  • issue 310 review --submit: Submit a change over SSH

    Changes can now be submitted over SSH by using the new --submit command line flag to gerrit review.

  • gerrit approve deprecated

    To support the new --submit flag, gerrit approve has been renamed to gerrit review, better matching the web UI name for the concept. The old gerrit approve name will be kept around as an alias to provide time to migrate hooks/scripts/etc.

Hooks / Stream Events

  • --change-url parameter passed to hooks

    The change URL was supplied in the stream-events feed, but was not passed into hooks, making it difficult for a hook to send a notification email with a link back to Gerrit. Fixed by adding the parameter.

  • Patch set uploader passed to hooks

    The identity of the user who uploaded a patch set was added as both a parameter to patchset-created hook, and to the patch set entity sent through stream-events.

  • issue 506 stream-events: Include the ref in patch sets

    The reference (e.g. refs/changes/12/812/2) to download a patch set is now included in the stream-events record, making it possible for a monitor to easily pull down a patch set and compile it.

Contrib

  • Example hook to auto-re-approve a trivial rebase

Misc.

  • transfer.timeout: Support configurable timeouts for dead clients

    Sometimes repo sync can leave dead connections open to Gerrit Code Review, resulting in worker threads that are tied up indefinitely, waiting for client IO that will never occur. Administrators may set transfer.timeout to place an upper bound on how long the server will wait for the client before aborting the connection and releasing the worker thread back into the pool.

  • container.slave: Automatically enable --slave

    Adminstrators can now add container.slave = true to their slave’s gerrit.config file, avoiding the need to make sure they always pass the --slave flag on the command line when starting their slave server.

  • Add separate task queue for non-interactive users

    Users who are a member of the special Non Interactive Users group can now have all of their SSH commands scheduled onto a different thread pool than everyone else. If enabled, this feature can help ensure quick response time for normal users when the system is heavily loaded by batch tasks.

  • Explain a remote rejection of a non-fast-forward

    If the remote peer rejected a non-fast-forward replication, make it clear that it was the remote that rejected the push, and not Gerrit Code Review’s client logic. The error is often caused by the remote repository having receive.denyNonFastForwards being set to true in $GIT_DIR/config. Gerrit’s error log message now hints at checking this setting on the remote repository.

  • Internal dependencies updated

    Updated JGit to 0.8.4, Jetty to 7.0.2.v20100331, H2 database to 1.2.134, Apache Commons Codec to 1.4, Apache Commons Net to 2.1, Apache Commons DBCP to 1.4.

Bug Fixes

Web UI

  • issue 396 Prevent no-score approvals from being recorded

    Change messages no longer say No score; no score when the user has not selected a particular approval setting.

  • issue 396 Summarize the number of inline comments

    A change message is now always recorded at the top level of a change anytime inline comments are published, even if no score change took place, and no cover letter was supplied by the user. The auto-generated message is a one line summary indicating how many inline comments were published at that time. This makes it easier to see what has occurred on the change.

  • issue 461 Space out Review and Submit Patch Set buttons

    The risk of clicking Submit Patch Set n when the user meant to click Review has been reduced by spacing the buttons further apart.

  • issue 587 Fix user site header/footer preference

    The user preference to hide the site header/footer wasn’t always being applied. Fixed.

  • issue 575 Require branches to always start from commits

    Branches could be created starting from annotated tags, resulting in crashes when a change gets submitted to the branch. Fixed by ensuring branches always start from commits.

  • issue 574 Add Cancel button to Register New Email dialog

    Users couldn’t (easily) get out of the dialog popped up by the Register New Email… button. A cancel button was added to close the dialog.

Server Programs

  • init: Import non-standardly named Git repositories

    When scanning for projects, any directory that is a valid Git repository is now imported, even if its name does not end with the standard .git suffix.

  • issue 460 gerrit.sh: Request at least 1024 file descriptors

    In the default configuration, Gerrit Code Review started with a hard limit of 256 file descriptors, which is too small for any site. This caused a number of failures, and a number of bugs were filed. The default has been raised to 1024.

  • issue 578 Improve schema version update by avoiding early pruning

    Previously init kept trying to remove unused tables or columns during each schema upgrade step. These removes are now deferred until the last step.

  • review: Actually log an internal server error’s root cause

    Internal server failures (such as database connectivity errors) were not properly logged by gerrit approve (now gerrit review). Fixed by logging the root cause of the failure.

Configuration

  • Display error when HTTP authentication isn’t configured

    Error reporting for a failed login attempt when auth.type is HTTP and the HTTP server isn’t supplying the expected header is now more explicit about describing the problem. This helps new site setups, but doesn’t have any impact on an existing site.

  • Fix javax.naming.PartialResultException: Unprocessed Continuation

    LDAP directory trees that require following a referral in order to lookup a name usually failed with the above Java exception during sign-in. Administrators can enable following by adding ldap.referral = follow to their gerrit.config file.

Documentation

  • documentation: Clarified the ownership of -- All Projects --

    The magic project All Projects isn’t allowed to have ownership delegated, and the documentation wasn’t clear why. Fixed by explaining the rationale in more detail.

  • issue 533 Fix JAR versions in other container installation

    The installation process for putting Gerrit Code Review under a 3rd party servlet container was out of date, as some JARs had the wrong versions listed. Fixed.

  • suexec: Document the suexec command

    The suexec command introduced in 2.1.2 was never documented. Fixed.

  • Corrected Eclipse documentation on importing Maven projects

    The Maven plugin changed some of its user interface, resulting in our step-by-step documentation being out of date. Fixed to match the current stable version of the Maven plugin.

Version

e8fd49f5f7481e2f916cb0d8cfbada79309562b4