= Release notes for Gerrit 2.1.3

Gerrit 2.1.3 is now available in the usual location:

link:https://www.gerritcodereview.com/download/index.html[https://www.gerritcodereview.com/download/index.html]

== 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
