blob: 127ab0976fa60bb053e6d387ad9b2a6a58f1d954 [file] [log] [blame]
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