Release notes for Gerrit 2.7
============================


Gerrit 2.7 is now available:

link:http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.7.war[
http://code.google.com/p/gerrit/downloads/detail?name=gerrit-2.7.war]

Gerrit 2.7 includes the bug fixes done with
link:ReleaseNotes-2.6.1.html[Gerrit 2.6.1] and
link:ReleaseNotes-2.6.2.html[Gerrit 2.6.2]. These bug fixes are *not*
listed in these release notes.

Schema Change
-------------


*WARNING:* This release contains schema changes.  To upgrade:
----
  java -jar gerrit.war init -d site_path
----

*WARNING:* Upgrading to 2.7.x requires the server be first upgraded to 2.1.7 (or
a later 2.1.x version), and then to 2.7.x.  If you are upgrading from 2.2.x.x or
newer, you may ignore this warning and upgrade directly to 2.7.x.



Release Highlights
------------------


* New `copyMaxScore` setting for labels.
* Comment links configurable per project.
* Themes configurable per project.
* Better support for binary files and images in diff screens.
* User avatars in more places.
* Several new REST APIs.


New Features
------------


General
~~~~~~~

* New `copyMaxScore` setting for labels.
+
Labels can be link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-labels.html#label_copyMaxScore[
configured] to copy approvals forward to the next patch set.

* Comment links can be link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-gerrit.html#commentlink[
defined per project in the project configuration].

* Gerrit administrators can define project-specific themes.
+
Themes can be link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-themes.html[
configured site-wide or per project].

* New '/a/tools' URL.
+
This allows users to download the `commit-msg` hook via the command line if the
Gerrit server requires authentication globally.

* New 'Stream Events' global capability.
+
The link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/access-control.txt#capability_streamEvents[
Stream Events capability] controls access to the `stream-events` ssh command.
+
Only administrators and users having this capability are allowed to use `stream-events`.

* Allow opening new changes on existing commits.
+
The `%base` argument can be used with `refs/for/` to identify a specific revision the server should
start to look for new commits at. Any commits in the range `$base..$tip` will be opened as a new
change, even if the commit already has another change on a different branch.

* New setting `gitweb.linkDrafts` to control if gitweb links are shown on drafts.
+
By default, Gerrit will show links to gitweb on all patch sets.  If the
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-gerrit.html#gitweb.linkDrafts[
gitweb.linkDrafts setting] is set to 'false', links will not be shown on
draft patch sets.

* Allow changes to be automatically submitted on push.
+
Teams that want to use Gerrit's submit strategies to handle contention on busy
branches can use `%submit` to create a change and have it
link:link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/user-upload.html#auto_merge[
immediately submitted], if the caller has Submit permission on `refs/for/<ref>`.

* Allow administrators to see all groups.


Web UI
~~~~~~


Global
^^^^^^

* User avatars are displayed in more places in the Web UI.

* 'Diffy' is used as avatar for the Gerrit server itself.

* A popup with user profile information is shown when hovering the
mouse over avatar images.


Change Screens
^^^^^^^^^^^^^^


* link:https://code.google.com/p/gerrit/issues/detail?id=667[Issue 667]:
Highlight patch sets that have drafts.
+
Patch sets having unpublished draft comments are highlighted with an icon.

* Option to show relative times in change tables.
+
A new preference setting allows the user to decide if absolute or relative dates
should be shown in change tables.

* Option to set default visibility of change comments.
+
A new preference setting allows the user to set the default visibility of
change comments.


Diff Screens
^^^^^^^^^^^^

* Show images in side-by-side and unified diffs.

* Show diffed images above/below each other in unified diffs.

* Harmonize unified diff's styling of images with that of text.


REST API
~~~~~~~~


Several new link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api.html[
REST API endpoints] are added.

Accounts
^^^^^^^^


* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-accounts.html#get-diff-preferences[
Get account diff preferences]

* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-accounts.html#set-diff-preferences[
Set account diff preferences]


Changes
^^^^^^^


* link:https://code.google.com/p/gerrit/issues/detail?id=1820[Issue 1820]:
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-changes.html#list-comments[
List comments]

* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-changes.html#get-comment[
Get comment]



Projects
^^^^^^^^


* link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-projects.html#get-config[
Get project configuration]


ssh
~~~


* link:https://code.google.com/p/gerrit/issues/detail?id=1088[Issue 1088]:
Support link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-gerrit.html#sshd.kerberosKeytab[
Kerberos authentication for ssh interaction].


Bug Fixes
---------

General
~~~~~~~

* Postpone check for first account until adding an account.


Web UI
~~~~~~


* link:https://code.google.com/p/gerrit/issues/detail?id=1848[Issue 1848]:
Don't discard inline comments when escape key is pressed.

* link:https://code.google.com/p/gerrit/issues/detail?id=1863[Issue 1863]:
Drop Arial Unicode MS font and request only sans-serif.
+
Arial Unicode MS does not have a bold version. Selecting this font prevents
correct display of bold text on Mac OS X. Simplify the selector to sans-serif
and allow the browser to use the user's preferred font in this family.


REST API
~~~~~~~~


* link:https://code.google.com/p/gerrit/issues/detail?id=1819[Issue 1819]:
Include change-level messages to the payload returned from
the link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/rest-api-changes#get-change-detail[
Get Change Detail REST API endpoint].

* Correct URL encoding in 'GroupInfo'.


Email
~~~~~

* Log failure to access reviewer list for notification emails.

* Log when appropriate if email delivery is skipped.


Tools
~~~~~


* The release build now builds for all browser configurations.


Upgrades
--------

* `gwtexpui` is now built in the gerrit tree rather than linking a separate module.



Documentation
-------------


* Update the access control documentation to clarify how to set
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/access-control.html#global_capabilities[
global capabilities].

* Clarify the
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.7/config-gerrit.html#cache_names[
change cache configuration].

