Release notes for Gerrit 2.0.4
==============================

Gerrit 2.0.4 is now available in the usual location:

link:http://code.google.com/p/gerrit/downloads/list[http://code.google.com/p/gerrit/downloads/list]

*WARNING: This version contains a schema change.*

Simple version of the schema upgrade:

  java -jar gerrit.war --cat sql/upgrade004_005_part1.sql | psql reviewdb

If you aren't collecting the contact information fields on individual
user accounts (the accounts columns contact_address, contact_country,
contact_phone_nbr, contact_fax_nbr) then you can safely apply both the
part1 and part2 upgrades without further thought.

  java -jar gerrit.war --cat sql/upgrade004_005_part2.sql | psql reviewdb

After this upgrade, the contact fields under My > Settings > Contact
Information will be hidden.

A much longer upgrade process is explained in the documentation if you
need to store the contact data.

* http://gerrit.googlecode.com/svn/documentation/2.0/config-contact.html
* http://gerrit.googlecode.com/svn/documentation/2.0/config-contact.html#upgrade_203
+
This horribly painful change was necessary to better protect
individual user's privacy by strongly encrypting their contact
information, and storing it "off site".

Other Changes
-------------
* Change to 2.0.3-SNAPSHOT
* Correct grammar in the patch conflict messages
* Document how to create branches through SSH and web
* Add how/why we call Gerrit Gerrit to the background sect...
* Don't bother logging IO errors caused by disappearing cl...
* Remove old entries from our feature roadmap
* Add a link to our issue tracker to the feature roadmap
* Add documentation on the access control lists and rights
* Escape single quotes when escaping text for HTML inclusi...
* Document that install was tested with Jetty 6.1.14 and l...
* Add a note about CA Siteminder long headers and Jetty
* Make sure the WorkQueue terminates when running command ...
* Move all contact information out of database to encrypte...
* Peg the versions of JGit and MINA SSHD to something known
* gerrit 2.0.4 