# Gerrit 2.15 *(In development)*

[TOC]

## Release Highlights

* New change workflows

## Important Notes

### Schema Changes

This release contains schema changes. To upgrade:

``` sh
  java -jar gerrit.war init -d site_path
```

## New Features

### New Workflows

#### Private Changes

Changes can be
[marked as private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#private-changes),
meaning they are only visible to the owner, reviewers, and users with the
["View Private Changes"](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/access-control.html#category_view_private_changes)
permission.

#### Ignore and Mute Changes

Changes can be
[ignored or muted](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/intro-user.html#ignore)
to reduce email notifications and keep dashboards cleaner.

#### Work-In-Progress

Changes can be switched between "work in progress" and "ready to review".

### API

* Instances of [IdString](https://gerrit.googlesource.com/gerrit/+/stable-2.15/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/restapi/IdString.java)
  used to return true when `equals` was given a String instance equal to the
  IdString's URL-encoded value. This violates
  [symmetry](https://en.wikipedia.org/wiki/Equivalence_relation#Definition), so
  this behavior was removed: IdStrings now never compare equal to Strings.

### REST API

#### Changes

* [Mark Private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#mark-private)

* [Unmark Private](http://gerrit-documentation.storage.googleapis.com/Documentation/2.15/rest-api-changes.html#unmark-private)

## Bugfixes

## Dependency Updates
