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:
orbug:
, for exampletr:432181
orbug: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