Release notes for Gerrit 2.0.16
===============================

Gerrit 2.0.16 is now available in the usual location:

link:https://www.gerritcodereview.com/download/index.html[https://www.gerritcodereview.com/download/index.html]

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

*WARNING: This version contains a schema change* (since 2.0.14)

Apply the database specific schema script:
----
  java -jar gerrit.war --cat sql/upgrade013_014_postgres.sql | psql reviewdb
  java -jar gerrit.war --cat sql/upgrade013_014_mysql.sql | mysql reviewdb
----

New Features
------------
* Search for changes created or reviewed by a user
+
The search box in the upper right corner now accepts "owner:email" and "reviewer:email", in addition to change numbers and commit SHA-1s.  Using owner: and reviewer: is not the most efficient query plan, as potentially the entire database is scanned.  We hope to improve on that as we move to a pure git based backend.

* Make History panel settings in a diff screen sticky
+
When comparing different patch sets, e.g. patch set 3 against patch set 2, the settings are now sticky across files in the same change, reducing the number of clicks required to re-review an existing change.

* GERRIT-113  Permit projects to require Signed-off-by lines to crea...
+
GERRIT-113 requested that project owners be able to enforce having a Signed-off-by line in the footer of a commit message.  Forks of the Linux kernel require this line in order to contribute back upstream.  If enabled in the project settings screen there must be a SOB line for the author, the committer, and the uploader of a change (though typically committer == uploader).

* Use Tested-by: instead of Verified-by: during cherry-p...
+
The Verified-by footer line created during a cherry-picked submit is now called Tested-by.  This better matches with the upstream Linux kernel's conventions of what the role means.  Since the kernel is more widespread than Gerrit Code Review, I'm sticking with the kernel's conventions.

* Extract reviewer suggestions from commit messages
+
If a commit message contains Reviewed-by, Tested-by or CC footer lines and those email addresses are registered in Gerrit, those users will receive notification of the new change.  This is an alternate method to supplying reviewer address on the command line.

* Drop the unnecessary host page servlet name from URLs
+
The "/Gerrit" suffix is no longer necessary in the URL.  Gerrit now favors just "/" as its path location.  This drops one redirection during initial page loading, slightly improving page loading performance, and making all URLs 6 characters shorter.  :-)

Bug Fixes
---------
* Don't create reflogs for patch set refs
+
Previously Gerrit created pointless 1 record reflogs for each change ref under refs/changes/.  These waste an inode on the local filesystem and provide no metadata value, as the same information is also stored in the metadata database.  These reflogs are no longer created.

* Fix "Error out if a user forgets to squash when replac...
+
Users were still able to find a way to make a change depend upon itself, which makes the change unsubmittable.  Often this was done by creating a merge commit, then committing on top of that, and uploading it as a replacement.  Gerrit failed to notice this condition because it only considered direct ancestors, now it also looks for indirect ancestors.

* Fix syntax error in MySQL URL in jetty_gerrit.xml
+
Someone noticed that the MySQL URL was invalid XML, its fixed now.

* Catch OpenID errors caused by clock skew and present t...
+
OpenID errors caused by clock skew (or other factors) now present as an error in the client user interface, and in the server log file, making it more obvious when an OpenID failure occurs.  New administrators trying to setup Gerrit installations have often run into problems here, due to bad error reporting.

* GERRIT-232  Support HTTP connections tunneled through SSH
+
If the hostname is "localhost" or "127.0.0.1", such as might happen when a user tries to proxy through an SSH tunnel, we honor the hostname anyway if OpenID is not being used.

Other Changes
-------------
* Start 2.0.16 development
* Update JGit to 0.4.9-18-g393ad45
* Name replication threads by their remote name
* Exclude JGit's JSch version during build
* Update ehcache to 1.6.0 release
* Update JGit to 0.5.0
* Update openid4java to 0.9.5 release
* Remove --offline mode from to_hosted.sh
* Save all project settings in one RPC
* Don't tag Reviewed-by, Tested-by if already Signed-off...
* Don't append duplicate Reviewed-on Gerrit URLs during ...
* Don't append duplicate Verified-by or Tested-by lines
* Use the List<FooterLine> to determine if a paragraph b...
* Try harder to pretty-print an exception name in error ...
* Fix minor whitespace issues in ErrorDialog
* Document how to contribute to Gerrit Code Review
* gerrit 2.0.16