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 suppressions
* 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