Release notes for Gerrit 2.1.4
==============================

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

Change Management
~~~~~~~~~~~~~~~~~

* issue 504 Implement full query operators
+
The search box now implments a wide range of operators and boolean
expressions, permitting complex queries such as `is:open CodeReview>=1
(has:draft OR is:starred)` to locate open changes that have been code
reviewed, but still have unpublished drafts or were starred by the
current user.  The full range of supported operators is documented
in the user guide.

* Change lists now use query operators
+
All current change lists have been reimplemented using query
operators, so selecting 'All open changes' actually performs the query
'is:open'.  This is to help end-users learn the different operators
that are supported, and simplifies the internal implementation
considerably by removing redundant code.

* issue 51 Tag changes with topic branches
+
Changes can be tagged with a topic name during upload.  To add the tag
'query' when pushing to branch 'master', use `git push URL
HEAD:refs/for/master/query`.  To add a topic name with `repo upload`
use the `-t` command line flag.  Topic names are displayed next to the
branch name in the web UI, and can be searched for with the `topic:`
query operator.

* Filter the list of open changes by watched projects
+
The query operator `is:watched` matches changes matching the user's
watched project list, and a new menu item was added under the My menu
to select open changes matching these watched projects.

Web UI
~~~~~~

* issue 579 Remember diff formatting preferences
+
Formatting options at the top of a side-by-side or unified diff page
are now remembered by saving the current preferences into the user's
account whenever 'Update' is clicked.

* issue 680 Show commit message on the per-file review pages

* issue 498 Improved keyboard navigation
+
More keyboard bindings have been added, reducing the need to switch to
the mouse while navigating through a change and performing a review.

* issue 395 Open new window/new tab for all files in a change
+
New buttons permit opening all modified files of a change into
new windows or tabs.

* issue 440 Add copy to clipboard button for change-id
+
The Change-Id field in the upper left side of a change now support to
copy "Change-Id: I...." onto the clipboard, making it easier to paste
into a commit message.

* issue 559 Allow copying user public ssh key to clipboard

* issue 509 Make branch columns link to changes on that branch

Email Notifications
~~~~~~~~~~~~~~~~~~~

* issue 311 No longer CC a user by default
+
The user who causes a notification to be sent is no longer CC'd on the
email when it is sent.  This reduces the number of messages sent to a
user, but can be re-enabled through a checkbox in the Settings >
Preferences panel.

* issue 535 Enable watching of all projects
+
Adding the magic `\-- All Projects \--` to the watched project list
permits the user to be notified of any change occurring in any
project.  Project specific entries override the notification settings
for all projects.

* issue 492 Allow watching specific branches or any other search query
+
In addition to watching a project, users can register a query string
to match specific changes, reducing notifications to be a smaller
subset of the changes that occur in a project.

* issue 70 Allow file:^regex to match affected files
+
The file:^path operator can be used in a watch filter to receive
notifications only when files matching the regular expression are
modified by the change.

* issue 623 Include Gerrit-Owner, Gerrit-Reviewer in email footers
+
New fields in the email footer provide additional detail, enabling
better filtering and classification of messages.

Access Control
~~~~~~~~~~~~~~

* Support regular expressions for ref access rules
+
References in an access rule can now be specified by regular
expression by prefixing the reference name with ^.

* issue 577 Support $\{username\} in access rules
+
Adding `$\{username\}` into a reference causes the current username to
be inserted at that position.  When combined with the Push Branch
permission this creates a per-user branch namespace feature, giving
each user their own "sandbox" to push changes to.

* issue 313 ssh gerrit create-group
+
Groups can now be created over SSH by administrators using the
`gerrit create-group` command.

Authentication
~~~~~~~~~~~~~~

* Remove password authentication over SSH
+
Adding password authentication over SSH turned out to be a major
mistake.  Users primarily use SSH public keys, and the password
prompt just got in the way or confused them.  Password support has
been removed from the SSH server.

* Username cannot be changed once assigned
+
Once a username has been selected for a user account, it
cannot be modified by the user.

* issue 555 Make LDAP sessions persistent for the session age
+
Web sessions are now persistent for the cache.web_sessions.maxAge
setting, rather than expiring when the browser closes.  (Previously
sessions expired when the browser exited.)

Misc.
~~~~~

* Add topic, lastUpdated, sortKey to ChangeAttribute
+
Additional change fields are now exported as part of the
stream-events output.

* issue 504 gerrit query SSH command
+
Queries to lookup change information can be executed over SSH through
the `gerrit query` command, with results output in either human
readable text or machine readable JSON.  Change queries can also be
run over HTTP with the `/query?q=<query>&format=JSON` URL.  Both
interfaces are intended for automated tools.

* Remove git diff-tree dependency
+
Gerrit no longer requires `git` in the PATH; differences are now
constructed in pure Java code.  Remote repository initialization over
SSH still requires `git` on the remote host's PATH.

* Internal dependencies updated
+
Updated JGit to 0.8.4.89-ge2f5716, log4j to 1.2.16, GWT to 2.0.4,
sfl4j to 1.6.1, easymock to 3.0, JUnit to 4.8.1.

Bug Fixes
---------

Web UI
~~~~~~

* issue 352 Confirm branch deletion in web UI
+
Deleting a branch now presents a confirmation dialog to give the user
a second chance to abort the destructive operation.

* Fix some JavaScript errors under Chrome
+
The GWT compiler started to define symbols in the same namespace as
the prettify syntax highlighting library.  We moved the prettify
library into its own iframe so it has a different JavaScript namespace
in the browser.

* Close button on OpenId register / sign-in dialog
+
There was no obvious way to leave the sign-in dialog. Fixed.

* Links in OpenId sign-in dialog not focusable
+
Keyboard navigation to standard links like 'Google Accounts'
wasn't supported.  Fixed.

Misc.
~~~~~

* issue 614 Fix 503 error when Jetty cancels a request
+
A bug was introduced in 2.1.3 that caused a server 503 error
when a fetch/pull/clone or push request timed out.  Fixed.

Version
-------

ae59d1bf232bba16d4d03ca924884234c68be0f2
