Release notes for Gerrit 2.0.11
===============================

Gerrit 2.0.11 is now available in the usual location:

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

*WARNING: This version contains a schema change.*

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

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

Cache directory
~~~~~~~~~~~~~~~

Gerrit now prefers having a temporary directory to store a disk-based content cache.  This cache used to be in the PostgreSQL database, and was the primary reason for the rather large size of the Gerrit schema.  In 2.0.11 the cache has been moved to the local filesystem, and now has automatic expiration management to prevent it from growing too large.  As this is only a cache, making backups of this directory is not required.

It is suggested (but not required) that you enable this cache:
----
  mkdir $site_path/disk_cache
  chown gerrituser $site_path/disk_cache
  chmod 700 $site_path/disk_cache           ; # just to be paranoid
----
The directory can also be placed elsewhere in the local filesystem, see `cache.directory` in the `gerrit.config` file.

link:http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html[http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html]

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

The protocol between the browser based JavaScript and the server has changed.  After installing 2.0.11 users need to load the site page again to ensure they are running 2.0.11 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
------------

* GERRIT-8    Add 'Whole File' as a context preference in the user s...
* GERRIT-9    Honor user's "Default Context" preference
* GERRIT-14   Split patch view RPCs into two halves
* GERRIT-61   Database error in side by side view
* GERRIT-156  Rewrite the side-by-side and unified diff viewers
+
The side by side and unified patch viewers have been completely rewritten.  Gerrit now honors the user's Default Context setting (from My > Settings) in both the side by side and the unified patch view.  A new "Whole File" setting is also available, showing the complete file.

* GERRIT-154  Add the branch name to the beginning of the subject li...
* Sending mail when merge failed due to path conflict, m...
+
Some improvements have been made with regards to the emails sent by Gerrit.

* Configure the JGit WindowCache from $site_path/gerrit....
* Document the new gerrit.config file
+
Gerrit now supports a Git-style "$site_path/gerrit.config" configuration file.  Currently this supports configuration of the various memory caches, including control over JGit's pack file cache.  See the updated documentation section for more details:
link:http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html[http://gerrit.googlecode.com/svn/documentation/2.0/config-gerrit.html]

* Add "gerrit show-caches" to view cache statistics
+
There is a new administrative command over SSH called "gerrit show-caches" which displays current cache statistics for the various caches within the Gerrit memory space.

* Expand local part emails when creating new changes
+
Simple DWIMery: users can now do `repo upload --reviewer=who` to have the reviewer email automatically expand according to the email_format column in system_config, e.g. by expanding `who` to `who@example.com`.

Bug Fixes
---------

* GERRIT-81   Can't repack a repository while Gerrit is running
+
Running "git repack", "git gc" or "git fetch" in a repository owned by Gerrit is now safe while Gerrit is running.

* GERRIT-165  Don't create new user accounts as full name = "null nu...
+
New users coming from Google Accounts OpenID provider where given a full name of "null null" rather than "Anonymous Coward".

* Honor account.preferred_email when checking co...
+
Service users created by manually inserting into the accounts table didn't permit using their preferred_email in commits or tags; administrators had to also insert a dummy record into the account_external_ids table.  The dummy account_external_ids record is no longer necessary.

Other Changes
-------------
* Start 2.0.11 development
* Include the 'Google Format' style we selected in our p...
* Upgrade JGit to v0.4.0-310-g3da8761
* Include JGit sources when building GWT code
* Cleanup classpath and use source JARs to build JavaScr...
* Remove the ImportGerrit1 command line utility
* Remove EncryptContactInfo helper program
* Add custom serialization for jgit.diff.Edit
* Add Ehcache 1.6.0-beta5 to our dependency list
* Start/stop Ehcache when GerritServer starts/stops
* Cache OpenID discovery results inside of Ehcache
* Cache JGit FileHeader and EditList inside of Ehcache
* Store FileHeader and EditList in Ehache during patch s...
* Remove the now dead patch_contents table from the data...
* Fix "null null" user names during schema upgrade from ...
* Work around asciidoc 8.2.2 not including our APLv2 lic...
* Remove unused logger from SshServlet
* Reuse is administrator test in admin SSH commands
* Use common PrintWriter construction in command impleme...
* Refactor gerrit flush-caches to just flush everything ...
* GERRIT-166  Move the SSH key cache into Ehcache
* Change the diff cache serialization of JGit ObjectId i...
* Fix git_base_path documentation in config-gerrit
* Clarify the default max_session_age in config-gerrit
* Enhance the site_path entry in config-gerrit
* Clarify the caching of static assets under $site_path/...
* Minor grammar fixes in the Google Analytics documentat...
* Document that replication honors StrictHostKeyChecking
* Document how ~/.ssh/known_hosts is used during replica...
* Document how ssh-agent cannot be used for replication
* Fix git_base_path references in project-setup
* Cleanup project setup documentation
* Expand the config-contact documentation to describe th...
* Clarify the gitweb integration documentation
* Minor corrections in install documentation
* Reformat the config-gerrit page to free up section hea...
* Enable table of contents in documentation files
* Add the source code version number to documentation
* More reformatting of the config-gerrit page
* Cleanup formatting references for file system path var...
* Cleanup the documentation index
* Kill the feature roadmap in the documentation
* Only use the disk cache directory if we can write to it
* Change the title of the installation guide
* Note in the developer install guides that you need to ...