Release notes for Gerrit 2.1.3
==============================

Gerrit 2.1.3 is now available in the usual location:

link:http://code.google.com/p/gerrit/downloads/list[http://code.google.com/p/gerrit/downloads/list]

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:`, for example `tr:432181`.  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.

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

* 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.

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

56f76b2bd01bc95fbcfa5cb9cbb3afa2c75eb9a6
