= Release notes for Gerrit 2.1

Gerrit 2.1 is now available in the usual location:

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


== New site_path Layout

The layout of the `$site_path` directory has been changed in 2.1.
Configuration files are now stored within the `etc/` subdirectory
and will be automatically moved there by the init subcommand.

== Upgrading From 2.0.x

  If the server is running a version older than 2.0.24, upgrade the
  database schema to the current schema version of 19.  Download
  'schema-upgrades003_019.zip' from the download area and run the
  scripts by hand as listed in README until the server is caught up.

Run init to convert the layout of $site_path:
----
  java -jar gerrit.war init -d $site_path
----

If there is a GerritServer.properties file handy, ensure it is in the
current working directory or inside of $site_path when running init.
If present, init will reuse this information rather than prompting
for it.  If the file is not found, init will prompt for database
connection information.

While moving the server's configuration files into the new
etc/ subdirectory, init will also move secret settings such as
sendemail.smtpPass and ldap.password out of gerrit.config into a
read-protected secure.config file.

== New Daemon Mode

Gerrit 2.1 and later embeds the Jetty servlet container, and
runs it automatically as part of `java -jar gerrit.war daemon`.
This is the preferred method of running Gerrit Code Review, and is
how sites like review.source.android.com are operating.

To simplify management on UNIX systems an rc.d style startup script
is created in `$site_path/bin/gerrit.sh`.  This script can be used
to start and stop the background daemon process.  When started
from this script the daemon calls itself `GerritCodeReview` in ps,
but may still show up in top as `java`.

Configuration of the daemon is handled by gerrit.config.  For more
information see the 2.1 documentation.

link:http://gerrit.googlecode.com/svn/documentation/2.1/index.html[http://gerrit.googlecode.com/svn/documentation/2.1/index.html]


== New Features

* issue 19     Link to issue tracker systems from commits
+
Hyperlinks from commit messages and any inline comments to
bug tracking systems can be enabled by configuring one or
more commentlink regular expressions in gerrit.config.

* Git replication security
+
Git replication can now be controlled on the sending side by
configuring one or more authGroups for a remote and granting
READ +1 access to only certain projects.

* Better repo upload/git push throughput
+
MINA SSHD was misconfiguring the host's TCP/IP stack, this
limited throughput of git push to under 16 KiB/s.  Fixed.
Its such a huge improvement that its an important feature,
rather than a bug fix.  :-)

* issue 320    Queue SSH commands and ensure consistent throughput
+
SSH commands are entered into a queue and executed in FIFO order
as processor capacity becomes available.  The queue enables
the server to work on a finite number of commands at once and
ensures running commands complete in a timely fashion, no matter
how many concurrent connections are being established.
The queue allows sites to maintain consistent throughput without
thrashing, even as the number of requests increase beyond server
capacity.  The change was made in anticipation of `repo sync`
learning how to fetch all projects at once, inducing a load of
over 200 concurrent commands per user/Android checkout.
Server administrative commands such as kill or gsql (below) bypass
the queue and are allowed to execute as soon as they are received.

* kill: Support killing any queued task
+
A new administrative kill command was introduced to terminate
any queued or running tasks.  Unlike UNIX kill, a killed task
will continue until its next safe interruption point, which is
usually at the next network read or write.

* issue 327    gsql: query tool on command line and SSH
+
Gerrit supports an interactive SQL query tool for administrators.
The query tool is available over SSH as `gerrit gsql`, or locally
as `java -jar gerrit.war gsql`.  The query tool is primarily
useful with H2 databases, where the database is only accessible
to the running Java process.

* issue 202    Self contained daemon mode
* issue 328    daemon: Automatically log into $site_path/logs
* daemon: Automatically compress our log files
+
As noted above, Jetty 7.0.1.v20091125 is now bundled, making new
site installation easier.  Logs from daemon mode are written
out to the site's logs/ subdirectory.  Logs are rotated and
compressed daily.

* issue 330    init: Create a command to setup a new site
* issue 343    init: Create database indexes during schema creation
* Remove CreateSchema command
+
The init command can be used to initialize a new site, or
as noted above, to upgrade an existing site to the current
software version.  Since init now does the work of CreateSchema,
and everything else that used to be listed out as individual
steps in the installation guide, CreateSchema was deleted.

* issue 325    Allow secure.config to overlay gerrit.config
* Configure database from gerrit.config
+
Database connectivity is now configured out of gerrit.config
and secure.config, rather than GerritServer.properties.

* Bundle PostgreSQL, H2, DBCP, MySQL, Bouncy Castle
+
JDBC drivers for PostgreSQL, H2, and the Apache Commons DBCP
connection pool implementation are now bundled, reducing the
number of external dependencies that must be obtained before
getting a working installation.
The MySQL driver is automatically downloaded and verified by
init if required, as is the Bouncy Castle Crypto provider.
These JARs are not packaged in the standard distribution due to
export and/or license restrictions.

* issue 183    Support invoking gitweb from within Gerrit
+
The standard gitweb.cgi can now be automatically configured and
executed through Gerrit's servlet container, making it easier to
publish a repository for browsing on the web.
Project level access controls are honored when browsing through
this gitweb interface.

* issue 105    Support OpenID when behind an HTTP proxy
* issue 323    Use JGit's http_proxy based initialization
+
HTTP proxies are now supported for OpenID authentication, as
well as for init's optional external library download.

* Add a Register link when using LDAP authentication
+
When auth.type is LDAP the Register link in the top right corner
can point to an administrator defined URL.  This external URL
might be as simple as a 'mailto:...' link, to help the user
request a new LDAP account from the directory administrators.

* Switch remote JSON services to use JSON-RPC 2.0
+
The JSON-RPC interface now speaks the JSON-RPC 2.0 draft
specification, in addition to the prior JSON-RPC 1.1
specification previously used.

* issue 336    Update MINA SSHD to SVN 891122
* issue 324    Update JGit to 0.5.1.51-g96b2e76
* Update JUnit to 3.8.2
* Update args4j to 2.0.16
* Update slf4j-log4j12 to 1.5.8
* Update Ehcache to 1.7.1
* Update commons-pool to 1.5.4
* Update H2 to 1.2.125
* Update to gwtjsonrpc 1.2.0, gwtexpui 1.1.4
+
Most dependencies were updated to their current stable versions.

== Bug Fixes

* issue 259    Improve search hint to include owner:email
+
The hint text in the search box in the upper right corner has
been improved to suggest owner:email and reviewer:email, as
these tags were not discoverable.

* issue 335    daemon: Refuse to launch unless gerrit.config exists
+
Gerrit now refuses to launch until the site path has been
properly initialized with init.  This is true both in daemon
mode and also when deployed inside of any servlet container.

* issue 152    Allow adding users who are missing a preferred email
+
The user suggestion boxes now permit adding a user that has not
yet selected a preferred email address on their contact panel.

* issue 319    Automatically set preferred email to first configured
+
If a user has no email addresses, the first address they register
through the next OpenID login, LDAP login, or 'Register New Email'
feature will be automatically set as the preferred email address
for their account.

* issue 356    Fix committer identity on cherry-pick
+
The committer identity created when cherry-picking a change was
formatted incorrectly, it used the internal account identity.
Fixed to use the submitter's preferred email address only.

* issue 345    Make "call11" readable in file content
+
The prior font made the string "call11" (c-a-ell-ell-one-one)
impossible to read because the ell and one looked the same.
Fixed by changing to different fonts for the fixed width file
content display.

* Automatically make first user account administrator
+
To simplify installation, the first user to login to a brand
new site is added to the 'Administrators' group.  This avoids
the need to update the database manually via SQL and restart
the daemon to have it be picked up.

* Always trim Change-Id lines to handle whitespace
+
Some users were adding trailing whitespace on a Change-Id line
by accident, causing Gerrit to not always honor it when uploading
a replacement patch.  Fixed.

* Fix duplicate branches in the branches panel
+
The Branches tab under a project displayed the HEAD branch twice,
but every other branch once.  Fixed.

* Enforce all HTTP requests through SSL
+
JSON-RPC requests are now required to be over SSL if the site
prefers to use SSL for communication.
Prior to 2.1 the JSON-RPC requests from the web UI were performed
over https:// if the web UI loaded over https://, but JSON-RPC
requests from other tools (e.g. a command line script) were
still allowed over plain text HTTP.

* Work around NPE when patch list fails to compute
+
Rather than return NullPointerException to the browser return
a "not found" error, as the source of the null pointer is the
underlying diff operation returned no results.

* Fix stuck "Loading Gerrit Code Review ..."
+
Many users have noticed that after about a week of server uptime
Gerrit no longer loads in their browser, until the server is
restarted.  This was usually caused by Jetty unpacking the WAR
file contents to /tmp, and the system having a cron task that
deleted files more than a week old from /tmp.
Under the daemon command the WAR file contents are unpacked into
`$HOME/.gerritcodereview/tmp`, which should be isolated from
the host system's /tmp cleaner.

== Other=

* Pick up gwtexpui 1.1.4-SNAPSHOT
* Merge change Ia64286d3
* Merge branch 'maint-2.0.24.1'
* Merge change Ic6f00304
* Merge branch 'maint-2.0.24.2'
* Add H2 database as a test dependency
* Update Ehcache to 1.7.0
* Fix formatting
* Rewrite our build as modular maven components
* Forbid use of anonymous servlets on any container
* Use listeners to manage server startup/shutdown
* Load additional JARs from $site_path/lib
* Fix PostgreSQL/H2 access under gwtdebug sessions
* Fix Become link in hosted mode debugging sessions
* Fix ssh:// URLs on change pages
* daemon: Update help for --slave option
* daemon: Remove -DGerritServer from documentation
* Launcher: Clarify the purpose of the daemon command
* daemon: Fix --site-path documentation
* Remove unused imports from pgm.DataSourceProvider
* launcher: Don't print stack trace with reflection frames
* Move H2 database down into $site_path/db
* Remove dead code identified by Eclipse 3.5.1
* Add missing default serialVersionUID
* pgm_daemon: Remove unnecessary -DGerritServer flag
* Move configuration files under $site_path/etc
* Update documentation to point to etc subdirectory
* Display the full stack trace if requested
* init: Don't delete site path on database creation fail
* Simplify errors reported by command line database fail
* init: Correct defaults for httpd.listenUrl in --batch
* issue 341    gsql: Fix \d on H2
* gsql: Improve formatting of column types and indexes
* pgm: Move non commands into a util package
* issue 342    gsql: Reduce connections used to only 1
* WorkQueue: Drop the word "-thread" from thread names
* documentation: Correct links in dev-design
* Fix port number in ssh pull lines in emails
* Update MINA SSHD to 0.3.0
* Update Jetty to 7.0.1.v20091125
* launcher: Refactor how we return the status code
* cat, ls: move inside our main program package
* Default temporary directory to $HOME/.gerritcodereview
* Clean up stale empty temporary directories
* daemon: Unpack the WAR contents to a local directory
* daemon: Run correctly under Eclipse debugger
* Create a rc.d style start/stop script for our daemon
* Remove unused ADMIN_PEOPLE link
* Ignore unsupported ulimit -x errors
* Use more portable printf instead of echo -n
* Support starting as current user without start-stop-daemon
* Make startup output universally the same
* Get the canonical path to our temporary directory
* init: Start daemon and open web browser when done
* documentation: Clean up references to 'Gerrit2'
* Cleanup the reflog identity generation
* Update to gwtjsonrpc 1.2.0-SNAPSHOT
* init: Configure gerrit.canonicalWebUrl if reverse proxy
* tools/version.sh: Quick hack to edit our Maven version
* Call the next version 2.1
* documentation: Rewrite installation guide
* Fix gerrit.sh to run properly on SuSE systems
* documentation: Fix formatting of remote.name.authGroup
* Fix missing @Override warning in IoUtil
* Don't enable replication if replication.config is empty
* Give H2 a canonical file path
* init: Add --no-auto-start to prevent starting the daemon
* init: Support updating an existing site configuration
* init: Open browser to gerrit.canonicalWebUrl
* daemon: Allow httpd.listenUrl to end with /
* issue 358    init: Don't abort on empty directory
* init: Initialize system_config.site_path
* Remove dead class MessagePanel
* issue 331    documentation: Update developer docs
* documentation: Link to apache2 reverse proxy setup
* init: Fix LDAP prompts to store to ldap section
* init: Store httpd.sslKeyPasword in secure.config
* init: Fix a minor source code formatting error
* commentlink: Support raw HTML replacements
* documentation: Cleanup formatting in gerrit-config
* Delete legacy schema upgrade scripts
* Remove legacy tools/to_jetty.sh
* Remove standalone Jetty 6.x support scripts
* Move all resource files into src/main/resources
* init: Move optional library download configuration
* init: Refactor init to be small parts created
* Test SitePaths class
* Test SocketUtil class
* Test init's Libraries class
* Test init's upgrade from 2.0.x layout to 2.1 layout
* pgm_daemon launch: Run ../test_site like docs suggest...
* tools/version.sh: Don't mangle the git describe output
* Use SitePaths to locate the logs directory
* Resolve out any symlinks before starting logging
* Mark compressed log files read-only
* tools/release.sh: Simplify our release build process
* Teach Main to check the Java runtime version
* documentation: Mention Google Code Prettify in licens...
* Refactor GitRepositoryManager to be an interface
* issue 346    Fix duplicate branches showing in the Branches tab
* Completely remove GerritServer.properties
* Clean up the DWIMery for database.* configuration set...
* Never compress a pid file under $site_path/logs
* Fix reading the $site_path/etc/ssh_host_key in serial...
* gerrit 2.1