Release notes for Gerrit 2.0.12
===============================

Gerrit 2.0.12 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.*

Apply the schema upgrade:
----
  java -jar gerrit.war --cat sql/upgrade010_011.sql | psql reviewdb
----

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

Java 6 Required
~~~~~~~~~~~~~~~

Gerrit now requires running within a Java 6 (or later) JVM.

Protocol change
~~~~~~~~~~~~~~~

The protocol between the browser based JavaScript and the server has changed.  After installing 2.0.12 users need to load the site page again to ensure they are running 2.0.12 or later.  Users can verify they have the new version by checking the version number in the footer in the lower right.  Users who don't load the new version (e.g. are using a stale tab from a week ago) will see errors when trying to view patches.

New Features
------------
* Honor --reviewer=not.preferred.email during upload
* Also scan by preferred email for --reviewers and --cc ...
+
Better DWIMery for matching reviewers by name, email address, or just local name (e.g. "jdoe") if using HTTP authentication with email_format.

* Add support for MySQL database
+
Now MySQL can be used as a backend data store.

* Switch all current SSH commands to use args4j
* Allow targeted cache flushes to only specific caches
+
SSH commands, especially administrative ones like "gerrit show-caches", "gerrit flush-caches", or "gerrit show-connections" now accept options like "-h"/"--help" to view command line options, and use a more typical option parsing semantics.

* GERRIT-164  Bind our SSH daemon with SO_REUSEADDR
* Honor sshd.tcpKeepAlive for TCP keep alive controls
* Enable SSH daemon cipher and MAC configuration
+
The SSH daemon now binds with SO_REUSEADDR, making warm-restarts of the daemon easier, especially if the site is busy.  Additionally, gerrit.config gained some new options to further control the behavior of the internal SSHD.

* Add admin command 'gerrit show-connections'
+
The new "gerrit show-connections" command reports who is connected, from what host, and what command(s) they are running on that SSH session.

* Replace the top menu bar with a tab panel and links
* GERRIT-27   Add a search box to quickly locate changes by change n...
+
The top menu bar area has been redesigned, and a search box has been added on the right, below the username and Settings links.  Currently the search box only accepts change numbers, but in the future we hope to support additional types of query strings.

* Allow users to disable clippy the flash movie if they ...
+
A new per-account setting permits users to disable the clippy Flash movie that supports copying text to the clipboard.  In every context where this movie appears clicking on the text converts it to a text box, allowing a fast "click Ctrl-C" interaction to place the text on the clipboard.  Personally I've found that loading 3 Flash movies on a change page really slowed down the UI rendering, so I wanted to disable the Flash movies.

* Allow users to control the number of results per page
+
A new per-account setting allows users to control how many rows appear per page in the All screens, like All Open Changes, etc.

* Rewrite the keyboard event handlers to use new GlobalK...
* GERRIT-136  Implement n/p keys to jump to next/previous diff chunk...
* Add keyboard bindings n/p for all change lists to pagi...
* Put the "Use '?' for keyboard help" ahead of the versi...
* GERRIT-136  Use 'f' in a patch to browse the list of files in the ...
* Add global jump navigation keys for the main menu
+
Keyboard bindings have been completely overhauled in this release, and should now work on every browser.  Press '?' in any context to see the available actions.  Please note that this help is context sensitive, so you will only see keys that make sense in the current context.  Actions in a user dashboard screen differ from actions in a patch (for example), but where possible the same key is used when the logical meaning is unchanged.

Bug Fixes
---------
* Ignore "SshException: Already closed" errors
+
Hides some non-errors from the log file.

* GERRIT-86   Stop generating raw #target anchor tags
+
Should be a minor improvement for MSIE 6 users.

Other Changes
-------------
* Start 2.0.12 development
* Report what version we want on a schema version mismat...
* Remove unused imports in SshServlet
* Fix vararg warnings in GerritSshDaemon
* Update Ehcache to 1.6.0-beta5
* Update SSHD to 1.0-r773859
* Start targeting Java 1.6
* Switch Maven GWT plugin to org.codehaus.mojo:gwt-maven...
* GERRIT-75   Upgrade to GWT 1.6.4
* GERRIT-75   Switch to GWT 1.6's new HostedMode debugging utility
* Allow become any account to use GET parameters
* Switch to gwtexpui's new CSS linker module
* Load the GWT theme before any other stylesheets
* Switch from our own LazyTabChild to GWT 1.6's LazyPanel
* GERRIT-75   Convert all GWT 1.5 listener uses to GWT 1.6 handlers
* Stop bundling the PostgreSQL driver
* Upgrade JGit to 0.4.0-372-gbd3c3db
* Add args4j 2.0.12 as a dependency
* Describe MySQL and H2 setup in jetty_gerrit.xml templa...
* Actually deregister a command when it exits
* Put the link to the review inside the body instead of ...
* Fix change permalinks after breaking them during GWT 1...
* Delete dead CSS bundle code
* Always use NpTextBox or NpTextArea to prevent GlobalKe...
* Detect cases where system_config has too many rows
* Remove unnecessary warning supressions
* Remove dead code, these aren't used anymore
* Fix warnings about potential serialization problems
* Fix warning about debug code in OpenIdServiceImpl
* Blur menu item hyperlinks on activation
* Fix LinkMenuItem blur on older browsers
* Remove dead LoginService, SignInResult classes
* Remove pointless GWT.isClient calls in Gerrit module
* Refactor how user preferences are applied to the UI
* Move the watched project list to its own tab in settin...
* Refactor account preferences model
* Sort the RSA host key before the DSA host key
* Clarify what the "known hosts entry" is
* Cleanup the name of the search focus key registration
* Change sign out handler to use GWT's HandlerManager su...
* Fix all onLoad, onUnload methods to be protected acces...
* Honor GWT 1.6's handleAsClick logic in DirectScreenLink
* Switch all hyperlinks to be InlineHyperlink
* Fix unused import in PatchScreen
* Make n/p only honor comments on file adds/deletes
* Switch to gwtjsonrpc's new Handler based status update...
* Move the comment editor actions into their own keyboar...
* Ensure the row pointer is visible before moving it
* Automatically reposition/resize file browser if window...
* Minor cleanup to Gerrit module bootstrap code path
* Make escape in the search box abort the search
* Switch to tagged gwtexpui, gwtjsonrpc, gwtorm
* gerrit 2.0.12