| = Release notes for Gerrit 2.8 | 
 |  | 
 |  | 
 | Gerrit 2.8 is now available: | 
 |  | 
 | link:https://www.gerritcodereview.com/download/gerrit-2.8.war[ | 
 | https://www.gerritcodereview.com/download/gerrit-2.8.war] | 
 |  | 
 |  | 
 | == Schema Change | 
 |  | 
 |  | 
 | *WARNING:* This release contains schema changes.  To upgrade: | 
 | ---- | 
 |   java -jar gerrit.war init -d site_path | 
 | ---- | 
 |  | 
 | *WARNING:* Upgrading to 2.8.x requires the server be first upgraded to 2.1.7 (or | 
 | a later 2.1.x version), and then to 2.8.x.  If you are upgrading from 2.2.x.x or | 
 | later, you may ignore this warning and upgrade directly to 2.8.x. | 
 |  | 
 | *WARNING:* The replication plugin now automatically creates missing repositories | 
 | on the destination if during the replication of a ref the target repository is | 
 | found to be missing. This is a change in behavior of the replication plugin. To go | 
 | back to the old behavior, set the parameter `remote.NAME.createMissingRepositories` | 
 | in the `replication.config` file to `false`. | 
 |  | 
 | *WARNING:* The deprecated `approve` alias for the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-review.html[ | 
 | review] SSH command has been removed. This is important for all users | 
 | of the Jenkins link:https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger[ | 
 | Gerrit Trigger Plugin] since this plugin by default uses the `approve` | 
 | command to vote and comment on changes in Gerrit. If you use the Gerrit | 
 | Trigger Plugin, go to its global configuration in Jenkins and adapt the | 
 | Gerrit commands to use the `review` command instead of the `approve` | 
 | command. | 
 |  | 
 | *WARNING:* The new change screen only displays download commands if the | 
 | `download-commands` core plugin or any other plugin providing download | 
 | commands is installed. The `download-commands` plugin provides the | 
 | standard download schemes and commands. It is packaged together with | 
 | Gerrit and can be installed during the | 
 | link:https://gerrit-review.googlesource.com/Documentation/pgm-init.html[ | 
 | site initialization]. | 
 |  | 
 |  | 
 | == Release Highlights | 
 |  | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/intro-change-screen.html[ | 
 | New change screen] with completely redesigned UI and fully using the REST API. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#__a_id_index_a_section_index[ | 
 | Secondary indexing with Lucene and Solr]. | 
 |  | 
 | * Lots of new link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api.html[ | 
 | REST API endpoints]. | 
 |  | 
 | * New | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#ui_extension[ | 
 | UI extension] and | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/js-api.html[ | 
 | JavaScript API] for plugins. | 
 |  | 
 | * New build system using Facebook's link:http://facebook.github.io/buck/[Buck]. | 
 |  | 
 | * New core plugin: Download Commands. | 
 |  | 
 |  | 
 | == New Features | 
 |  | 
 | === Build | 
 |  | 
 | * Gerrit is now built with | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-buck.html[ | 
 | Buck]. | 
 |  | 
 | * Documentation is now built with Buck and link:http://asciidoctor.org[Asciidoctor]. | 
 |  | 
 |  | 
 | === Indexing and Search | 
 |  | 
 | Gerrit can be configured to use a | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#__a_id_index_a_section_index[ | 
 | secondary index] with Lucene or Solr. | 
 |  | 
 | Existing search operations use the secondary index, when enabled, to increase | 
 | performance and reduce resource usage. | 
 |  | 
 | The following additional search operations are possible when secondary indexing | 
 | is enabled: | 
 |  | 
 | * New | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/user-search.html#comment[ | 
 | `comment` search operator]. | 
 |  | 
 | * The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/user-search.html#file[ | 
 | `file` operator] can be used to find changes on the specified file. | 
 |  | 
 | * Regular expressions are allowed in `file` searches. | 
 |  | 
 |  | 
 | *WARNING:* After enabling the secondary index, the index must be built using the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/pgm-reindex.html[ | 
 | reindex program] before restarting the Gerrit server. | 
 |  | 
 |  | 
 | === Configuration | 
 |  | 
 | * Project owners can define `receive.maxObjectSizeLimit` in the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#receive.maxObjectSizeLimit[ | 
 | project configuration] to further reduce the global setting. | 
 |  | 
 | * Site administrators can define a | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-mail.html#_footer_vm[ | 
 | footer template] that will be appended to the end of all outgoing emails after | 
 | the 'ChangeFooter' and 'CommentFooter'. | 
 |  | 
 | * New `topic-changed` hook and stream event is fired when a change's topic is | 
 | edited from the Web UI or via a REST API. | 
 |  | 
 | * New options `--list-plugins` and `--install-plugins` on the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/pgm-init.html[ | 
 | site initialization command]. | 
 |  | 
 | * New `auth.httpDisplaynameHeader` and `auth.httpEmailHeader` in the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#__a_id_auth_a_section_auth[ | 
 | authentication configuration]. | 
 | + | 
 | When using HTTP-based authentication, the SSO can be delegated to check not only | 
 | the user credentials but also to fetch the full user-profile. | 
 | + | 
 | With the config properties `auth.httpDisplaynameHeader` and `auth.httpEmailHeader` | 
 | it is possible to configure the name of the headers used for propagating this extra | 
 | information and enforce them on the user profile during login and beyond. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#__a_id_httpd_a_section_httpd[ | 
 | Customizable registration page for HTTP authentication]. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#__a_id_httpd_a_section_httpd[ | 
 | Configurable external `robots.txt` file]. | 
 |  | 
 | * Support for | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/database-setup.html#createdb_oracle[ | 
 | Oracle database]. | 
 |  | 
 | * New bash completion script for autocompletion of parameters to the gerrit.sh wrapper. | 
 |  | 
 | * The site can be | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-auto-site-initialization.html[ | 
 | auto-initialized on server startup]. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#httpd.filterClass[ | 
 | Configurable filtering of HTTP traffic through Gerrit's HTTP protocol]. | 
 |  | 
 | * Labels can be | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-labels.html#httpd.label_copyAllScoresIfNoCodeChange[ | 
 | configured to copy scores forward to new patch sets if there is no code change]. | 
 |  | 
 | * Labels can be | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-labels.html#httpd.label_copyAllScoresOnTrivialRebase[ | 
 | configured to copy scores forward to new patch sets for trivial rebases]. | 
 |  | 
 | === Web UI | 
 |  | 
 |  | 
 | ==== Global | 
 |  | 
 | * The change status is shown in a separate column on dashboards and search results. | 
 |  | 
 | ==== Change Screens | 
 |  | 
 |  | 
 | * New change screen with completely redesigned UI, using the REST API. | 
 | + | 
 | Site administrators can | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#gerrit.changeScreen[ | 
 | configure which change screen is shown by default]. | 
 | + | 
 | Users can choose which one to use in their personal preferences, either using | 
 | the site default or explicitly choosing the old one or new one. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=141[Issue 141]: | 
 | In the new change screen, comments can be added on a range of lines. | 
 |  | 
 | * New button to cherry-pick the change to another branch. | 
 |  | 
 | * When issuing a rebase via the Web UI, the committer is now the logged in | 
 |   user, rather than "Gerrit Code Review". | 
 | + | 
 | If the user has more than one email address, the preferred email address will | 
 | be used. | 
 |  | 
 | * Default user's full name to git committer name if user has not configured a | 
 | full name in their profile. | 
 |  | 
 | * Include comment author attributes in comment panels. | 
 | + | 
 | Comment author's email address and name are included as attributes in comment | 
 | panels.  This makes it easier to filter out CI-based comments using user | 
 | scripts. | 
 |  | 
 | * Copy reviewed flag to new patch sets for identical files. | 
 | + | 
 | If a user has already seen and reviewed a file, the 'reviewed' flag is forwarded | 
 | on to the next patch set when the content of the file in the next patch set is | 
 | identical to the reviewed file. | 
 |  | 
 | * "Uploaded Patch Set 1" change message is added on changes when they | 
 | are uploaded. | 
 |  | 
 |  | 
 | === REST API | 
 |  | 
 | * Several new link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api.html[ | 
 | REST API endpoints] are added. | 
 |  | 
 | * REST views can determine how long their response should be cached. | 
 |  | 
 | * REST views can handle 'HTTP 422 Unprocessable Entity' responses. | 
 |  | 
 | ==== Access Rights | 
 |  | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-access.html#list-access[ | 
 | List access rights for project(s)] | 
 |  | 
 | ==== Accounts | 
 |  | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#create-account[ | 
 | Create account] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-account-name[ | 
 | Get account full name] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#set-account-name[ | 
 | Set account full name] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#delete-account-name[ | 
 | Delete account full name] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#list-account-emails[ | 
 | List account email addresses] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-account-email[ | 
 | Get account email address] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#set-preferred-email[ | 
 | Set account preferred email address] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#create-account-email[ | 
 | Create account email] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#delete-account-email[ | 
 | Delete account email] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-active[ | 
 | Get account state] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#set-active[ | 
 | Set account state to active] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#delete-active[ | 
 | Set account state to inactive] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-http-password[ | 
 | Get account HTTP password] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#set-http-password[ | 
 | Set or generate account HTTP password] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#delete-http-password[ | 
 | Delete account HTTP password] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#list-ssh-keys[ | 
 | List account SSH keys] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-ssh-key[ | 
 | Get account SSH key] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#add-ssh-key[ | 
 | Add account SSH key] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#delete-ssh-key[ | 
 | Delete account SSH key] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-username[ | 
 | Get account username] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#get-starred-changes[ | 
 | Get starred changes] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#star-change[ | 
 | Star change] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-accounts.html#unstar-change[ | 
 | Unstar change] | 
 |  | 
 | ==== Changes | 
 |  | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#rebase-change[ | 
 | Rebase change] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#cherry-pick[ | 
 | Cherry-pick revision] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#get-content[ | 
 | Get content of a file in a revision] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#get-patch[ | 
 | Get revision as a formatted patch] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#get-diff[ | 
 | Get diff of a file in a revision] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#get-commit[ | 
 | Get parsed commit of a revision] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#publish-draft-change[ | 
 | Publish draft change] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#delete-draft-change[ | 
 | Delete draft change] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#suggest-reviewers[ | 
 | Suggest reviewers] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-changes.html#get-included-in[ | 
 | Get included in] | 
 |  | 
 |  | 
 | ==== Config | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-config.html#get-capabilities[ | 
 | Get capabilities] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-config.html#get-version[ | 
 | Get version] (of the Gerrit server) | 
 |  | 
 |  | 
 | ==== Projects | 
 |  | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#list-branches[ | 
 | List branches] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#get-branch[ | 
 | Get branch] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#create-branch[ | 
 | Create branch] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#delete-branch[ | 
 | Delete branch] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#list-child-projects[ | 
 | List child projects] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#get-child-project[ | 
 | Get child project] | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/rest-api-projects.html#set-config[ | 
 | Set configuration] | 
 |  | 
 |  | 
 | === Capabilities | 
 |  | 
 |  | 
 | New global capabilities are added. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/access_control.html#capability_generateHttpPassword[ | 
 | Generate Http Password] allows non-administrator users to generate HTTP | 
 | passwords for users other than themselves. | 
 | + | 
 | This capability would typically be assigned to a non-interactive group | 
 | to be able to generate HTTP passwords for users from a tool or web service | 
 | that uses the Gerrit REST API. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/access_control.html#capability_runAs[ | 
 | Run As] allows users to impersonate other users by setting the `X-Gerrit-RunAs` | 
 | HTTP header on REST API calls. | 
 | + | 
 | Site administrators do not inherit this capability;  it must be granted | 
 | explicitly. | 
 |  | 
 |  | 
 | === Emails | 
 |  | 
 | * The `RebasedPatchSet` template is removed.  Email notifications for rebased | 
 | changes are now sent with the `ReplacePatchSet` template. | 
 |  | 
 | * Comment notification emails now include context of comments that are replied | 
 | to, and links to the file(s) in which comments are made. | 
 |  | 
 |  | 
 | === Plugins | 
 |  | 
 |  | 
 | ==== Global | 
 |  | 
 |  | 
 | * Plugins may now contribute buttons to various parts of the UI using the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#ui_extension[ | 
 | UI extension] and | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/js-api.html[ | 
 | JavaScript API]. | 
 |  | 
 | * Plugins may now provide an 'About' section on their documentation index page. | 
 |  | 
 | * Plugins may now provide separate sections for REST API and servlet | 
 | documentation on their index page. | 
 |  | 
 | * Plugins may now provide | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-validation.html#pre-merge-validation[ | 
 | pre-merge validation steps]. | 
 |  | 
 | * Plugins may now provide | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#capabilities[ | 
 | Global capabilities]. | 
 |  | 
 | * Plugins may now | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#plugin_name[ | 
 | define their own name] and get the name injected at runtime. | 
 |  | 
 | * The "hello world" plugin is replaced with the "cookbook plugin" which has more | 
 | examples of the plugin API's usage. | 
 |  | 
 | * Plugins may now trigger and listen to a "project deleted" | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#events[ | 
 | event]. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2101[Issue 2101]: | 
 | Plugins implementing LifecycleListener can use auto registration. | 
 |  | 
 | * Plugins may bind REST endpoints with empty view names. | 
 |  | 
 | * Plugins may now provide | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#top-menu-extensions[ | 
 | entries in Gerrit's top menu]. | 
 |  | 
 | * Plugins may now | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#stream-events[ | 
 | send events to the events stream]. | 
 |  | 
 | * Plugins may now bind multiple SSH commands to the same implementation class. | 
 |  | 
 | * Plugins may now provide | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/dev-plugins.html#download-commands[ | 
 | download schemes and download commands]. | 
 | + | 
 | Commonly used download schemes and commands are moved out of core | 
 | Gerrit and are now implemented by a new core plugin, `download-commands`. | 
 |  | 
 |  | 
 |  | 
 | ==== Commit Message Length Checker | 
 |  | 
 |  | 
 | * Commits whose subject or body length exceeds the limit can be rejected. | 
 |  | 
 | ==== Replication | 
 |  | 
 | * Automatically create missing repositories on the destination. | 
 | + | 
 | If during the replication of a ref the target repository is found to be missing, | 
 | the repository is automatically created. | 
 | + | 
 | This is a change in behavior of the replication plugin. To go back to the old | 
 | behavior, set the parameter `remote.NAME.createMissingRepositories` in the | 
 | `replication.config` file to `false`. | 
 |  | 
 | * Support for replication of project deletions. | 
 | + | 
 | The replication plugin can now be configured to listen to project deletion events | 
 | and to replicate the project deletions. By default project deletions are *not* | 
 | replicated. | 
 |  | 
 | * link:http://code.google.com/p/gerrit/issues/detail?id=1880[Issue 1880]: | 
 | Make `{name}` placeholder optional when replicating a single project. | 
 | + | 
 | The `{$name}` placeholder is optional when replicating a single project, | 
 | allowing a single project to be replicated under a different name. | 
 |  | 
 | * Project names can be matched with wildcard or regex patterns in `replication.config`. | 
 |  | 
 | * The `replication start` command does not exit until replication is finished | 
 | when the `--wait` option is used. | 
 |  | 
 | * The `replication start` command displays a summary of the replication status. | 
 |  | 
 | * Retry counts are added to replication task names, so they can be seen in the | 
 | output of the `show-queue` command. | 
 |  | 
 | * The `remoteNameStyle` option can be set to `basenameOnly` to replicate projects | 
 | using only the basename on the target server. | 
 |  | 
 | * The `startReplication` global capability is now provided by the plugin. | 
 |  | 
 | * Pushes to each destination URI are serialized. | 
 | + | 
 | Scheduling a retry to avoid collision with an in-flight push is differentiated | 
 | from a retry due to a transport error.  In the case of collision avoidance, the | 
 | job is rescheduled according to the replication delay, rather than the retry | 
 | delay. | 
 |  | 
 |  | 
 | === ssh | 
 |  | 
 |  | 
 | * The `commit-msg` hook installation command is now | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-gerrit.html#gerrit.installCommitMsgHookCommand[ | 
 | configurable]. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-ls-members.html[ | 
 | New `ls-members` command]. | 
 |  | 
 | * link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-set-members.html[ | 
 | New `set-members` command]. | 
 | + | 
 | New command to manipulate group membership. Members can be added or removed | 
 | and groups can be included or excluded in one specific group or number of groups. | 
 |  | 
 | * The full commit message is now included in the data sent by the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-stream-events.html[ | 
 | `stream-events` command]. | 
 |  | 
 | * The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-show-queue.html[ | 
 | `show-queue` command] now shows the time that a task was added to the queue. | 
 |  | 
 | * The deprecated `approve` alias of the `review` command is removed. | 
 |  | 
 | * The 'CHANGEID,PATCHSET' format for specifying a patch set in the `review` command | 
 | is no longer considered to be a 'legacy' feature that will be removed in future. | 
 |  | 
 | === Daemon | 
 |  | 
 |  | 
 | * Add `--init` option to Daemon to initialize site on daemon start. | 
 | + | 
 | The `--init` option will also upgrade an already existing site and is processed in | 
 | non-interactive (batch) mode. | 
 |  | 
 |  | 
 | == Bug Fixes | 
 |  | 
 |  | 
 | === General | 
 |  | 
 |  | 
 | * Use the parent change on the same branch for rebases. | 
 | + | 
 | Since there can be multiple changes with the same commit on different branches, | 
 | use the parent change on the same branch during rebase. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=600[Issue 600]: | 
 | Fix change stuck in SUBMITTED state but actually merged. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1699[Issue 1699]: | 
 | Fix handling of projects with trailing ".git" suffix. | 
 |  | 
 | * Limit retrying of submitted changes to 12 hours. | 
 |  | 
 | * Don't allow project owners to delete branches if force push is blocked. | 
 |  | 
 | * Allow usernames to begin with digit. | 
 |  | 
 | * Verify access to source ref during add branch operation. | 
 | + | 
 | Previously Gerrit didn't check access to source ref during add branch | 
 | operation. Because of that users could create a branch from any known | 
 | commit SHA1, even when they didn't have access to that commit. | 
 |  | 
 | * Fix Gerrit API sources JAR contents. | 
 | + | 
 | The gerrit-extension-api-X.Y-all-sources.jar did not actually contain any | 
 | sources. | 
 |  | 
 | * Generate javadoc for Gerrit Extension and Plugin APIs. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2244[Issue 2244]: | 
 | Update patch status before skipping duplicate emails. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1640[Issue 1640]: | 
 | Catch missing LDAP accounts in group membership. | 
 |  | 
 | * Use `rev-parse` to find gitdir when generating commit-msg hook hint. | 
 |  | 
 | * Performance Fix: Minimize number of advertisedHaves. | 
 | + | 
 | By filtering the refs before the objectIds are added to advertisedHaves, | 
 | lots of time can be saved when pushing to complex Gits. | 
 |  | 
 |  | 
 | === Configuration | 
 |  | 
 |  | 
 | * Do not persist default project state in `project.config`. | 
 |  | 
 | * Honor the `gerrit.canonicalWebUrl` setting when opening the browser after init. | 
 |  | 
 | * Fix 'query disabled' error when Query Limit is set. | 
 |  | 
 | * Honor the `gerrit.createChangeId` setting from the git config in the | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-hook-commit-msg.html[ | 
 | `commit-msg` hook]. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2045[Issue 2045]: | 
 | Define user scope when parsing server config. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1990[Issue 1990]: | 
 | Support optional Certificate Revocation List (CRL) with `CLIENT_SSL_CERT_LDAP`. | 
 |  | 
 | * Do not override error and gc logging configuration provided by the | 
 | `-Dlog4j.configuration` parameter. | 
 |  | 
 | * Fix JdbcSQLException when numbers are read from cache. | 
 |  | 
 | === Web UI | 
 |  | 
 |  | 
 | ==== Global | 
 |  | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1574[Issue 1574]: | 
 | Correctly highlight matches of text in escaped HTML entities in suggestion results. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1996[Issue 1996]: | 
 | The "Keyboard Shortcuts" help popup can be closed by pressing the Escape key. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2013[Issue 2013]: | 
 | Correctly populate the list of watched changes when watching more than one project. | 
 |  | 
 | * Display "Working..." when header is hidden. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2125[Issue 2125]: | 
 | Correctly shows '-1' instead of '1' for label score. | 
 | + | 
 | If a user voted '-1', and then another user voted '+1' for a label, the | 
 | label was shown as a red '1' in the change list instead of red '-1'. | 
 |  | 
 | ==== Change Screens | 
 |  | 
 |  | 
 | * Default review comment visibility is changed to expand all recent. | 
 | + | 
 | By default all comments within the last week are expanded, rather than | 
 | only the most recent. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1814[Issue 1814]: | 
 | Sort labels alphabetically by name in the approval table. | 
 |  | 
 | * Don't add "This patchset was cherry picked to ..." for the same change. | 
 | + | 
 | If a patchset is cherry-picked to the same destination branch and | 
 | ends up on the same change, it does not make sense to add the "This | 
 | patchset was cherry picked to change ..." message. | 
 | + | 
 | In this case, it makes more sense for the message to say "Uploaded | 
 | patch set N" instead. | 
 |  | 
 | * Make links appear with consistent colors. | 
 |  | 
 | * Prevent duplicate permitted_labels from being shown in labels list. | 
 |  | 
 | ==== Diff Screens | 
 |  | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1233[Issue 1233]: | 
 | Prevent expansion when whole file isn't loaded. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2122[Issue 2122]: | 
 | Show review comments for unchanged files. | 
 | + | 
 | When comparing patch sets and some comment was put in one side, | 
 | that comment was not shown if there was no code changed between | 
 | the two patch sets | 
 |  | 
 | ==== Project Screens | 
 |  | 
 |  | 
 | * Only enable the delete branch button when branches are selected. | 
 |  | 
 | * Disable the delete branch button while branch deletion requests are | 
 | still being processed. | 
 |  | 
 | ==== User Profile Screens | 
 |  | 
 |  | 
 | * The preferred email address field is shown as empty if the user has no | 
 | preferred email address. | 
 |  | 
 |  | 
 | === REST API | 
 |  | 
 |  | 
 | * Support raw input also in POST requests. | 
 |  | 
 | * Show granted date for labels/all when using `/changes/`. | 
 |  | 
 | * Return all revisions when `o=ALL_REVISIONS` is set on `/changes/`. | 
 |  | 
 | === ssh | 
 |  | 
 |  | 
 | * The `--force-message` option is removed from the | 
 | The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-review.html[ | 
 | `review` command]. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=1908[Issue 1908]: | 
 | Provide more informative error messages when rejecting updates. | 
 |  | 
 | * Remove the limit in the query of patch sets by revision. | 
 |  | 
 | * Add `isDraft` in the `patchSet` attribute of `stream-events` data. | 
 | + | 
 | This allows consumers of the event stream to determine whether or not | 
 | the event is related to a draft patch set. | 
 |  | 
 | * Normalize the case of review labels submitted via the | 
 | The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/cmd-review.html[ | 
 | `review` command]. | 
 |  | 
 | * The `@CommandMetaData(descr)` annotation is deprecated in favor of `@CommandMetaData(description)`. | 
 |  | 
 | * Improve the error message when rejecting upload for review to a read-only project. | 
 |  | 
 |  | 
 | === Plugins | 
 |  | 
 | ==== Global | 
 |  | 
 | * Better error message when a Javascript plugin cannot be loaded. | 
 |  | 
 | * Plugin documentation links are opened in a new tab. | 
 |  | 
 | * The GitReferenceUpdatedListener.Event API is simplified. | 
 | + | 
 | The Event exposed the getUpdates method which implied that one Event | 
 | could contain updates of more than one reference. However, this feature | 
 | was never used. | 
 | + | 
 | The API is simplified in the sense that one Event now corresponds to | 
 | one ref update only. | 
 |  | 
 | * Make plugin servlet's context path authorization aware. | 
 |  | 
 |  | 
 | ==== Review Notes | 
 |  | 
 | * Do not try to create review notes for ref deletion events. | 
 |  | 
 | * Fix committing the notes from the export command. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2087[Issue 2087]: | 
 | Fix note creation when the same commit exists in another Git repository. | 
 |  | 
 | * Improve the export command performance. | 
 |  | 
 | * Create review note also when newObjectId already present in another branch. | 
 |  | 
 | * Correct documentation of the export command. | 
 |  | 
 | === Emails | 
 |  | 
 | * Email notifications are sent for new changes created via actions in the | 
 | Web UI such as cherry-picking or reverting a change. | 
 |  | 
 |  | 
 | === Tools | 
 |  | 
 |  | 
 | * git-exproll.sh: return non-zero on errors | 
 |  | 
 |  | 
 | == Documentation | 
 |  | 
 |  | 
 | * The link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/index.html[ | 
 | documentation index page] is rewritten in a hierarchical structure. | 
 |  | 
 | * Documentation of | 
 | link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.8/config-project-config.txt[ | 
 | project configuration] is added. | 
 |  | 
 | * Various spelling mistakes are corrected in the documentation and previous | 
 | release notes. | 
 |  | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2144[Issue 2144]: | 
 | Documentation of the query operator is fixed. | 
 |  | 
 |  | 
 | == Upgrades | 
 |  | 
 | * Update JGit to 3.1.0.201310021548-r | 
 | * Update gwtorm to 1.7 | 
 | * Update guice to 4.0-beta | 
 | * Update guava to 15.0 | 
 | * Update H2 to 1.3.173 | 
 | * Update bouncycastle to 1.44 | 
 | * Update Apache Mina to 2.0.7 | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2232[Issue 2232]: | 
 | Update Apache SSHD to 0.9.0.201311081 | 
 | * asciidoctor 0.1.4 is now required to build the documentation | 
 | * jsr305 library was removed | 
 | * link:https://code.google.com/p/gerrit/issues/detail?id=2232[Issue 2232]: | 
 | Update Jsch to 1.5.0 |