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