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

* 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 review` 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.7.1.11-g2b6c555, 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
