Release notes for Gerrit 2.0.22
===============================

Gerrit 2.0.22 is now available in the usual location:

link:http://code.google.com/p/gerrit/downloads/list[http://code.google.com/p/gerrit/downloads/list]

Schema Change
-------------

There is no schema change in this release.

* Restriction on SSH Username
+
There is a new restriction placed on the SSH Username field 
within an account.  Users who are using invalid names should
be asked to change their name to something more suitable.
Administrators can identify these users with the following query:
----
     -- PostgreSQL
     SELECT account_id,preferred_email,ssh_user_name
     FROM accounts
     WHERE NOT (ssh_user_name ~ '^[a-zA-Z][a-zA-Z0-9._-]*[a-zA-Z0-9]$');

     -- MySQL
     SELECT account_id,preferred_email,ssh_user_name
     FROM accounts
     WHERE NOT (ssh_user_name REGEXP '^[a-zA-Z][a-zA-Z0-9._-]*[a-zA-Z0-9]$');
----
   Administrators can force these users to select a new name by
   setting ssh_user_name to NULL; the user will not be able to
   login over SSH until they return and select a new name.


New Features
------------
* GERRIT-280  create-project: Add --branch and cleanup arguments
+
The --branch option to create-project can be used to setup the
default initial branch to be a name other than 'master'.
Argument parsing also changed slightly, especially around the
boolean options and submit type.  Please recheck the documentation
and/or the output of --help.

* GERRIT-216  Add slave mode to ssh daemon
+
The standalone SSH daemon can now be run in a read-only
mode.  This allows use Gerrit's access control database for
access decisions when serving a read-only copy of the project
repositories.  Placing a read-only slave local to a remote office
may reduce sync times for those closer to the slave server.

* Enable multi-line comment highlighting for Scala code
+
Scala source code now highlights more like Java source code does,
especially for multiline `/** ... */` style comments.

* GERRIT-271  Enable forcing ldap.accountSshUserName to lowercase
+
The following properties may now be configured from LDAP using
more complex expressions: accountFullName, accountEmailAddress,
accountSshUserName.  Property expressions permit forcing
to a lowercase string, or performing string concentation.
These features may help some environments to better integrate
with their local LDAP server.

* Support username/password authentication by LDAP
+
A new auth.type of LDAP was added to support Gerrit prompting
the end-user for their username and password, and then doing a
simple bind against the LDAP server to authenticate the user.
This can simplify installation in environments which lack a
web based single-sign-on solution, but which already have a
centralized LDAP directory for user management.

* Inform submitter of merge failure by dialog box
+
When a change submit fails, a dialog box is now displayed showing
the merge failure message.  This saves the user from needing to
scroll down to the end of the change page to determine if their
submit was successful, or not.

* Better submit error messages
+
Missing dependency submit errors are now much more descriptive
of the problem, helping the user to troubleshoot the issue on
their own.  Merge errors from projects using the cherry-pick
and fast-forward submit types are also more descriptive of the
real cause.  Unfortunately path conflict errors are not any more
descriptive, but path conflict is now only reported when there
is actually a path conflict.

* issue 285   Include pull command line in email notifications
+
Sample git pull lines are now included in email notifications.

Bug Fixes
---------
* create-project: Document needing to double quote descr...
+
The --description flag to create-project require two levels
of quoting if the new description string contains whitespace.
The documentation has been updated to reflect that, and shows some
examples .  Unfortunately this is not easily fixed in software,
due to the way the SSH client passes the command line to the
remote server.

* GERRIT-281  daemon: Remove unnecessary requirement of HttpServletR...
+
The standalone SSH daemon now starts correctly, without needing
to put the Java servlet API into the CLASSPATH.

* Enforce Account.sshUserName to match expression
* Restrict typeable characters in SSH username
* Disallow ., `_` and - in end of SSH Username
+
SSH usernames were permitted to contain any character, including
oddball characters like '\0' and '/'.  We really want them to
be a restricted subset which won't cause errors when we try to
map SSH usernames as file names in a Git repository as we try
to move away from a SQL database.

* GERRIT-282  Fix reply to comment on left side
+
Clicking 'Reply' to a comment on the left hand side sometimes
generated a server error due to a subtle bug in how the reply
was being setup.  Fixed.

* issue 282   Fix NullPointerException if ldap.password is missing
+
The server NPE'd when trying to open an LDAP connection if
ldap.username was set, but ldap.password was missing.  We now
assume an unset ldap.password is the same as an empty password.

* issue 284   Make cursor pointer when hovering over OpenID links
+
The cursor was wrong in the OpenID sign-in dialog.  Fixed.

* Use abbreviated Change-Id in merge messages
+
Merge commits created by Gerrit were still using the older style
integer change number; changed to use the abbreviated Change-Id.

Other Changes
-------------
* Start 2.0.22 development
* Configure Maven to build with UTF-8 encoding
* Document minimum build requirement for Mac OS X
* Merge change 10296
* Remove trailing whitespace.
* Update issue tracking link in documentation
* Merge branch 'doc-update'
* Move client.openid to auth.openid
* Fix minor errors in install documentation.
* Merge change 11961
* Cleanup merge op to better handle cherry-pick, error c...
* GERRIT-67   Wait for dependencies to submit before claiming merge ...
* Move abandonChange to ChangeManageService
* Remove trailing whitespace in install.txt
* Gerrit 2.0.22