Release notes for Gerrit 2.11
=============================


Gerrit 2.11 is now available:

link:https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war[
https://gerrit-releases.storage.googleapis.com/gerrit-2.11.war]

Important Notes
---------------


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

*WARNING:* Upgrading to 2.11.x requires the server be first upgraded to 2.8 (or
2.9) and then to 2.11.x. If you are upgrading from 2.8.x or later, you may ignore
this warning and upgrade directly to 2.11.x.

*WARNING:* The 'Generate HTTP Password' capability has been
link:#remove-generate-http-password-capability[removed].

*WARNING:* Google will
link:https://developers.google.com/+/api/auth-migration[shut down their OpenID
service on 20th April 2015]. Administrators of sites whose users are registered
with Google OpenID accounts should encourage the users to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-sso.html#_multiple_identities[
add an alternative identity to their account] before this date. Users who do
not add an alternative identity before this date will need to create a new
account and ask the site administrator to
link:https://code.google.com/p/gerrit/wiki/SqlMergeUserAccounts[merge it].

*WARNING:* The
link:https://gerrit-review.googlesource.com/Documentation/2.10/rest-api-changes.html#message[
Edit Commit Message] REST API endpoint is removed

*WARNING:* The deprecated '/query' URL is removed and will now return `Not Found`.

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


* link:http://code.google.com/p/gerrit/issues/detail?id=505[Issue 505]:
Changes can be created and edited directly in the browser. See the
link:#inline-editing[Inline editing] section for more details.

* Many improvements in the new change screen.

* The old change screen is removed.


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


Web UI
~~~~~~

[[inline-editing]]
Inline Editing
^^^^^^^^^^^^^^

Refer to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/user-inline-edit.html[
inline editing user guide] for detailed instructions.

* New changes can be created directly in the browser via a 'Create Change'
button on the project info screen.

* New follow-up changes can be created via a 'Follow-Up' button on the change
screen.

* File content can be edited in a full screen CodeMirror editor with support for
themes and syntax highlighting.

* The CodeMirror screen can be configured in the same way as the side-by-side
diff screen.

* The file table in the change screen supports seamless navigation to the
CodeMirror editor.

* Edit mode can be started from the side-by-side diff screen with seamless
navigation to the CodeMirror editor.

* The commit message must now be changed in the context of a change edit. The
'Edit Message' button is removed from the change screen.

* Files can be added, deleted, restored and modified directly in browser.

Change Screen
^^^^^^^^^^^^^

* Remove the 'Edit Message' button from the change screen.
+
The commit message is now edited using the inline edit feature.

* Add support for changing parent revision with the 'Rebase' button.
+
Using the 'Rebase' button it is now possible to rebase a change onto a
different change (on the same destination branch), rather than only onto the
head of the destination branch or the latest patch set of the predecessor change.

* Show the parent commit's subject as a tooltip.

* Decorate abandoned changes in the 'Related Changes' list with a dark red dot.

* link:http://code.google.com/p/gerrit/issues/detail?id=2541[Issue 2541],
link:http://code.google.com/p/gerrit/issues/detail?id=2974[Issue 2974]:
Allow the 'Reply' button's
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#change.replyLabel[
label and tooltip] to be configured.

* Improve file sorting for C and C++ files.
+
Header files are now listed before implementation files.

* link:http://code.google.com/p/gerrit/issues/detail?id=3148[Issue 3148]:
Allow display of colored size bars to be enabled or disabled per user.
+
The 'Show Change Sizes As Colored Bars In Changes Table' setting is renamed to
'Show Change Sizes As Colored Bars' and is now used to also control how the
change size is shown per file in the file table.
+
When enabled (which is the default), the change size per file is shown as a sum
of lines added/removed, and also representated by a colored bar showing the
proportion of added/removed lines.
+
When disabled, the colored bar is not shown and the change size per file is shown
in the same way as it used to be in the old change screen.

* Show changes across all projects and branches in the `Same Topic` tab.


Side-By-Side Diff
^^^^^^^^^^^^^^^^^

* New button to switch between side-by-side diff and unified diff.

* New preference setting to toggle auto-hiding of the diff table header.
+
The setting determines whether or not the diff table header with the patch set
selection should be automatically hidden when scrolling down more than half of
a page.

* Highlight search results on scrollbar.
+
Search results in vim mode are highlighted in the scrollbar with gold
colored annotations.

* Set line length to 72 characters for commit messages.

* Add syntax highlighting for several new modes:

** link:https://code.google.com/p/gerrit/issues/detail?id=2848[Issue 2848]: CSharp
** Dart
** Dockerfile
** GLSL shader
** Go
** Objective C
** RELAX NG
** link:http://code.google.com/p/gerrit/issues/detail?id=2779[Issue 2779]: reStructured text
** Soy


Projects Screen
^^^^^^^^^^^^^^^

* Add pagination and filtering on the branch list page.

* Add an 'Edit Config' button on the project info page.
+
The button creates a new change on the `refs/meta/config` branch and opens the
`project.config` file in the inline editor.
+
This allows project owners to easily edit the `project.config` file from the
browser, which is useful since it is possible that not all configuration options
are available in the UI.

REST
~~~~

Accounts
^^^^^^^^

* Add new link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-accounts.html#suggest-account[
Suggest Account endpoint].

Changes
^^^^^^^

* The link:https://gerrit-review.googlesource.com/Documentation/2.10/rest-api-changes.html#message[
Edit Commit Message] endpoint is removed in favor of the new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-change-edit-message[
Change commit message in Change Edit] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#publish-edit[
Publish Change Edit] endpoints.

* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#check-change[
Check Change endpoint].
+
In the past, Gerrit bugs, lack of transactions, and unreliable NoSQL backends
have at various times produced a bewildering variety of corrupt states.
+
This endpoint can be used to detect, explain, and repair some of these possible
states of a change.

* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-revision-actions[
Get Revision Actions endpoint].

* Add
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#change-actions[
`CHANGE_ACTIONS`] option on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-change-detail[
Get Change Detail] endpoint.


Change Edits
^^^^^^^^^^^^

Several new endpoints are added to support the inline edit feature.

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-detail[
Get Edit Detail].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-edit-file[
Change file content in Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#post-edit[
Restore file content in Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#put-change-edit-message[
Change commit message in Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#delete-edit-file[
Delete file in Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-file[
Retrieve file content from Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#get-edit-message[
Retrieve commit message from Change Edit or current patch set of the change].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#publish-edit[
Publish Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#rebase-edit[
Rebase Change Edit].

* link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#delete-edit[
Delete Change Edit].


Projects
^^^^^^^^

* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#delete-branches[
Delete Branches] endpoint.

* Add filtering and pagination options on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-branches[
List Branches] endpoint.

* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-tags[
List Tags] endpoint.

* Add new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#get-tag[
Get Tag] endpoint.


Configuration
~~~~~~~~~~~~~

* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#auth.httpExternalIdHeader[
HTTP external ID header].
+
This can be used when authenticating with a federated identity token from
an external system, e.g. GitHub's OAuth 2.0 authentication.

* Add
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-labels.html#label_copyAllScoresIfNoChange[
`copyAllScoresIfNoChange`] setting for labels.
+
Allows to copy scores forward when a new patch set is uploaded that has the same
parent tree, code delta, and commit message as the previous patch set.

* link:https://code.google.com/p/gerrit/issues/detail?id=2786[Issue 2786]:
Allow non-administrators to modify user accounts.
+
A new global capability,
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_modifyAccount[
'Modify Account'], which allows the granted group members to modify user account
settings via the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`set-account` SSH command].
+
Modification of users' SSH keys is still restricted to administrators.

* Add support for
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#ldap.useConnectionPooling[
LDAP connection pooling].

* link:https://code.google.com/p/gerrit/issues/detail?id=699[Issue 699]: Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#receive.maxBatchChanges[
limit max number of changes pushed in a batch].
+
Can be overridden by members of groups that are granted the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_batchChangesLimit[
Batch Changes Limit] capability.

* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#gerrit.disableReverseDnsLookup[
disable reverse DNS lookup].
+
This option can be set to improve push time from hosts without a reverse DNS
entry.

* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#cache.projects.loadOnStartup[
load the project cache at server startup].

* Allow members of groups granted the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/access-control.html#capability_accessDatabase[
AccessDatabase capability] to view metadata refs.

* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#http.addUserAsRequestAttribute[
add the user to the http request attributes].

* Allow to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#suggest.fullTextSearch[
enable full text search in memory for review suggestions].
+
The maximum number of reviewers evaluated can be limited with
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#suggest.fullTextSearchMaxMatches[
suggest.fullTextSearchMaxMatches].

* Allow to provide an alternative
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#gerrit.secureStoreClass[
secure store implementation].

* link:https://code.google.com/p/gerrit/issues/detail?id=1195[Issue 1195]:
Allow projects to be configured to create a new change for every uploaded commit that is not in the target branch.

* Allow to configure
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#container.daemonOpt[
options to pass to the daemon].

* Remove support for Google accounts and add support for Launchpad accounts on
the OpenID login page.

Daemon
~~~~~~

* Allow to enable the http daemon when running in slave mode.
+
The `--enable-httpd` option can be used in conjunction with the `--slave` option
to allow clients to fetch from the slave over the http protocol.
+
HTTP Authentication may also be used when running in slave mode.

* Include the submitter's name in the change message when a change is submitted.

* Add a message to changes created via cherry pick.
+
When a change is cherry-picked to another branch using the cherry-pick action,
the message 'Patch Set <number>: Cherry Picked from branch <name>.' is added as
a change message on the created change.

* Don't send 'new patch set' notification emails for trivial rebases.


ssh
~~~

* Add new commands
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-logging-ls-level.html[
`logging ls-level`] and
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-logging-set-level.html[
`logging set-level`] to show and set the logging level at runtime.

* link:https://code.google.com/p/gerrit/issues/detail?id=602[Issue 602]:
Add `--json` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-review.html[
`review` SSH command].
+
Review input can be given to the `review` command in JSON format corresponding
to the REST API's
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#review-input[
ReviewInput] entity.

*  link:https://code.google.com/p/gerrit/issues/detail?id=2824[Issue 2824]:
Add `--rebase` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-review.html[
`review` SSH command].

* Add `--clear-http-password` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`set-account` SSH command].

* Add `--preferred-email` option to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/cmd-set-account.html[
`set-account` SSH command].

Email
~~~~~

* Add `$change.originalSubject` field for email templates.
+
GMail threads messages together by subject and ignores the list headers included
by Gerrit.
+
Site administrators that run servers whose end-user base is mostly on GMail can
modify the site's `ChangeSubject.vm` template to use `$change.originalSubject` to
improve threading for GMail inboxes.
+
The `originalSubject` field is automatically taken from the existing subject
field during first use.


Plugins
~~~~~~~

General
^^^^^^^

* Plugins can listen to account group membership changes
+
The audit log service allows to register listeners to group member added and
group member deleted events. A default listener logs these events to the database
as before, but additional listeners may now be registered for these events using
the `GroupMemberAuditListener` interface.

* Plugins can validate ref operations.
+
Plugins implementing the `RefOperationValidationListener` interface can
perform additional validation checks against ref creation/deletion operations
before they are applied to the git repository.

* Plugins can provide project-aware top menu extensions
+
Plugins can provide sub-menu items within the 'Projects' context. The
'${projectName}' placeholder is replaced by the project name.

* Auto register static/init.js as JavaScript plugin.
+
When a plugin does not expose Guice Modules explicitly, auto discover and
register static/init.js as WebUi extension if found by the plugin content
scanner.

* Plugins can validate outgoing emails.
+
Plugins implementing `OutgoingEmailValidationListener` interface can filter
and modify outgoing emails before they are sent.

* Plugins that provide initialization steps may now use functionality
from InitUtil in core Gerrit.

* New extensions in the Java Plugin API:

** Set/Put topic.
** Get mergeable status.
** link:https://code.google.com/p/gerrit/issues/detail?id=461[Issue 461]:
Get current user.
** Get file content.
** Get file diff.
** Get comments and drafts.
** Get change edit.

Replication
^^^^^^^^^^^

* Projects can be specified with wildcard in the `start` command.


Bug Fixes
---------

Daemon
~~~~~~

* Change 'Merge topic' to 'Merge changes from topic'.
+
When multiple changes from a topic are submitted resulting in a merge commit,
the title of the merge commit is now 'Merge changes from topic' instead of
'Merge topic'.

* Fix visibility checks for `refs/meta/config`.
+
Under some conditions it was possible for the `refs/meta/config` branch to be
erroneously considered not visible to the user.

* Sort list of updated changes in output from push.

* link:https://code.google.com/p/gerrit/issues/detail?id=2940[Issue 2940]:
Improve warning messages when `Change-Id` is missing in the commit message.

** Add a hint to amend the commit after installing the commit-msg hook.
** Don't show 'Suggestion for commit message' when `Change-Id` is missing.

* Allow to publish draft patch sets even when `allowDrafts` is false.
+
If a user uploaded a change while `allowDrafts` was enabled, and then it was
disabled by the administrator, the uploaded change could not be published and
was stuck in the draft state.


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

* Improve LDAP login times and transfer 40x less data.
+
When recursively expanding LDAP groups, all attributes were fetched. However
only one of the attributes is actually needed. By fetching only that attribute,
the amount of data transferred is significantly reduced and the login time is
decreased.


Secondary Index / Search
~~~~~~~~~~~~~~~~~~~~~~~~

* link:https://code.google.com/p/gerrit/issues/detail?id=2822[Issue 2822]:
Improve Lucene analysis of words linked with underscore or dot.
+
Instead of treating words linked with underscore or dot as one word, Lucene now
treats them as separate words.

* Fix support for `change~branch~id` in query syntax.


Configuration
~~~~~~~~~~~~~

[[remove-generate-http-password-capability]]
* Remove the 'Generate HTTP Password' capability.
+
The 'Generate HTTP Password' capability has been removed to close a security
vulnerability.  Now only administrators are allowed to generate and delete other
users' http passwords via the REST or SSH interface.
+
It is encouraged to clean up your `project.config` settings after upgrading.

* Fix support for multiple `footer` tokens in tracking ID config.
+
Contrary to
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/config-gerrit.html#trackingid[
the documentation], if more than one `footer` token was specified in the
`trackingid` section, only the first was used.

Web UI
~~~~~~

Change Screen
^^^^^^^^^^^^^

* link:http://code.google.com/p/gerrit/issues/detail?id=2894[Issue 2894]:
Link to change screen for merged or abandoned changes in the 'Related Changes'
list.
+
For changes in the 'Related Changes' tab that are closed the link was
bringing the user to GitWeb, and not as expected to the change screen.

* link:http://code.google.com/p/gerrit/issues/detail?id=3147[Issue 3147]:
Allow to disable muting of common path prefixes in the file list.
+
In the file table, parts of the file path that are common to the file previously
listed are muted. The purpose of this is to make it easier to see files that all
belong under the same path, but some users find it annoying.
+
This feature can now be enabled or disabled, per user, with the 'Mute Common
Path Prefixes In File List' setting.

* link:http://code.google.com/p/gerrit/issues/detail?id=3130[Issue 3130]:
Remove special handling of 'LGTM' in review comments
+
Typing 'LGTM' in the review cover message no longer automatically selects the
highest available Code-Review score.

* Show a confirmation dialog before deleting a draft change or patch set.
+
Previously there was no confirmation and a draft change or revision patch
set would be lost if the button was accidentally clicked.

* link:https://code.google.com/p/gerrit/issues/detail?id=2533[Issue 2533]:
Improve the layout and color scheme of buttons.
+
Several improvements have been made:
+
** Move 'Publish' and 'Delete Change/Revision' buttons into header.
+
If a change/revision is a draft the natural next step is to publish (or delete)
it, hence these buttons should be displayed in a more prominent place.

** Highlight the 'Publish' button in blue.
+
If a change is a draft the natural next step is to publish it, hence
the 'Publish' button should be highlighted similar to the quick
approve button.

** Fix the border color of buttons on the reply popup.
+
The buttons are blue but had white borders, which was inconsistent with the
buttons on the change screen.

** Remove red color for 'Abandon' and 'Restore' buttons.
+
There is nothing dangerous about these operations that justifies
highlighting the buttons in red color. When the buttons are clicked
there is a popup where the user must confirm the operation, so it can
still be canceled.

** Hide quick approve button for draft changes.
+
A draft change cannot be submitted, hence quick approving it is not that
important. Hiding the quick approve button on draft changes makes space in the
header for displaying more important actions such as 'Publish'.

* Differentiate between conflicts and already merged errors in cherry-pick
+
When a cherry-pick operation failed with 'Cherry pick failed' error, there was no
way to know the reason for the failure: merge conflict or the commit is already
on the target branch.  These failures are now differentiated and an appropriate
error is reported.

* link:https://code.google.com/p/gerrit/issues/detail?id=2837[Issue 2837]:
Improve display of long user names for collapsed comments in history.
+
If there were several users with long user names with the same prefix, e.g.
'AutomaticGerritVoterLinux' and 'AutomaticGerritVoterWindows', they would both
be shown as 'AutomaticGerritVo...' and users had to expand the comment to see
the full user name.
+
The ellipsis is now inserted in the middle of the user name so that the start
and end of the user name are always visible, e.g. 'AutomaticG...VoterLinux' and
'AutomaticG...terWindows'.

* link:https://code.google.com/p/gerrit/issues/detail?id=2992[Issue 2992]:
Fix display of review comments for Chrome on Android.
+
Chrome for Android has Font Boosting, which caused the review comments to
be displayed too large.

* link:https://code.google.com/p/gerrit/issues/detail?id=2909[Issue 2909]:
Make change owner votes removable.
+
If a change owner voted on a change, it was not possible for anyone other
than the owner to remove the vote.

* Preserve topic when cherry-picking.
+
When a change is cherry-picked, the topic from the source change is preserved
on the newly created change.

* link:http://code.google.com/p/gerrit/issues/detail?id=3007[Issue 3007]:
Make the selected tab persistent.
+
If a change from the 'Same Topic' tab was clicked, the selected tab would reset
to the default tab ('Related Changes').

* Left-align column titles in the file list.

* Increase right margin of download box to make space for scrollbar.
+
Under some circumstances the browser's scrollbar would be shown over the
copy-to-clipboard icons in the download dropdown.

* Display +1 score's text next to the checkbox for simple boolean labels.
+
In the reply box, the text of the label score is displayed on the right hand
side when a score is selected, but this was missing for simple boolean labels.

* Don't show missing accounts as reviewer suggestions.

* Show the email address that matched the search in reviewer suggestions.
+
When matching accounts by email address against an external account, results
now show the email address that matched, not the preferred email address.

* Fix accidental reviewer selection on slow networks.


Side-By-Side Diff
^^^^^^^^^^^^^^^^^

* Return to normal mode after editing a draft comment.
+
Previously it would remain in visual mode.

* Fix C++ header and source syntax highlighting
+
cpp and hpp files were sometimes rendered with C mode and not the extended C++
mode.  This prevented keywords like `class` from being colored by the
highlighter.


Project Screen
^^^^^^^^^^^^^^

* Fix alignment of checkboxes on project access screen.
+
The 'Exclusive' checkbox was not aligned with the other checkboxes.

REST API
~~~~~~~~

Changes
^^^^^^^

* Remove the administrator restriction on the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#index-change[
index change] endpoint.
+
The endpoint can now be used by any user who has visibility of the change.

* Only include account ID in responses unless `DETAILED_ACCOUNTS` option is set.
+
The behavior was inconsistent with the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-accounts.html#account-info[
documentation]. In the default case it was including only the account name,
rather than only the account ID.

* Include revision's ref in responses.
+
The ref of a revision was only returned as part of the fetch info, which is only
available if the download commands are installed.

* Correctly set the limit to the default when no limit is given in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-changes.html#suggest-reviewers[
suggest reviewers] endpoint.

* Return correct response from 'delete draft' endpoints.
+
When the `change.allowDrafts` setting is False, it is not allowed to delete
draft changes or patch sets.
+
In this case the response `405 Method Not Allowed` is now returned, instead of
`409 Conflict`.


Projects
^^^^^^^^

* Make it mandatory to specify at least one of the `--prefix`, `--match` or `--regex`
options in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/rest-api-projects.html#list-projects[
list projects] endpoint.

* link:https://code.google.com/p/gerrit/issues/detail?id=2706[Issue 2706]:
Do not delete branches concurrently.
+
Deleting multiple branches from the UI was resulting in a server error when
branches were in the packed-refs.

* Add retry logic for lock failure when deleting a branch.

* link:http://code.google.com/p/gerrit/issues/detail?id=3153[Issue 3153]:
Fix handling of project names ending with `.git`.
+
The projects REST API documentation states that the `.git` suffix will be
stripped off the input project name, if present.
+
This was working for the 'Create Project' endpoint, but not for any of the
others.


Plugins
~~~~~~~

Replication
^^^^^^^^^^^

* Create missing repositories on the remote when replicating with the git
protocol.


Upgrades
--------

* Update Antlr to 3.5.2.

* Update ASM to 5.0.3.

* Update CodeMirror to 4.10.0-6-gd0a2dda.

* Update Guava to 18.0.

* Update Guice to 4.0-beta5.

* Update GWT to 2.7.

* Update gwtjsonrpc to 1.7-2-g272ca32.

* Update gwtorm to 1.14-14-gf54f1f1.

* Update Jetty to 9.2.6.

* Update JGit to 3.6.2.201501210735-r.40-g23ad3a3.

* Update Lucene to 4.10.2.

* Update Parboiled to 1.1.7.

* Update Pegdown to 1.4.2.
