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