Release notes for Gerrit 2.0.2
==============================

Gerrit 2.0.2 is now available for download:

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

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

Starting with this version, Gerrit is now packaged as a single WAR file.
Just download and drop into your webapps directory for easier deployment.
The WAR file itself is also executable via "java -jar gerrit.war", so tools
like CreateSchema are easier to invoke ("java -jar gerrit.war
CreateSchema").

The following optional 3rd party JARs are not included in the WAR:

* Bouncy Castle Crypto API
* H2 JDBC Driver
* c3p0 pooled DataSource
+
Existing Gerrit administrators either need to change the SSH host key used
by their servers, or download the Bouncy Castle Crypto API.  The OpenSSH key
file format can only be read if Bouncy Castle is available, so you need to
install that library to continue using an existing host key.  If you are
using Jetty, you can download the library (
http://www.bouncycastle.org/java.html) to $JETTY_HOME/lib/plus, then restart
Jetty.
If you use H2 as your database, you will need to download the JDBC driver
and insert it into your container's CLASSPATH.  But I think all known
instances are on PostgreSQL, so this is probably not a concern to anyone.

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

* Trailing whitespace is highlighted in diff views
* SSHD upgraded with "faster connection" patch discussed on list
* Git reflogs now contain the Gerrit account information of who did the push
* Insanely long change subjects are now clipped at 80 characters

All Changes
-----------

* Switch back to -SNAPSHOT builds
* Overhaul our build system to only create a WAR file
* Rename top level directory devutil to gerrit1_import
* Move appjar contents up one level to normalize our struc...
* Refactor the project admin screen into tabs
* Move "Publish Comments" before "Submit Patch Set"
* Fix to_jetty.sh to account for the WAR not having a scri...
* Don't close SSH command streams as MINA SSHD does it for...
* Avoid NPE if sign-in goes bad and is missing a token
* Describe how to make /ssh_info unprotected for repo
* Improve documentation links to Apache SSHD
* Fix Documentation Makefile to correctly handle new files
* Insert some line breaks to make Documentation/install.tx...
* Don't require Bouncy Castle Crypto
* Don't require c3p0 or H2 drivers
* Show the account id in the user settings screen
* Fix log4j.properties to not run in DEBUG
* Don't log DEBUG data out of c3p0's SqlUtils class
* Fix to_jetty so it doesn't unpack c3p0 from our WAR
* Cleanup c3p0 connection pools if used
* Yank the mobile specific OpenID login panel
* GERRIT-23  Highlight common whitespace errors such as whitespace on...
* Fix tabs in Gerrit.css to be 2 spaces
* Record the account identity in all reflogs
* Don't allow the project name in change tables to wrap
* Clip all change subject lines at 80 columns in change ta...
* gerrit 2.0.2