= Release notes for Gerrit 2.0.22

Gerrit 2.0.22 is now available in the usual location:

link:https://www.gerritcodereview.com/download/index.html[https://www.gerritcodereview.com/download/index.html]

== 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 concatenation.
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 an 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
