| = 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 |