= LocalUsernamesToLowerCase

== NAME
LocalUsernamesToLowerCase - Convert the local username of every
account to lower case

== SYNOPSIS
--
'java' -jar gerrit.war 'LocalUsernamesToLowerCase' -d <SITE_PATH>
--

== DESCRIPTION
Converts the local username for every account to lower case. The
local username is the username that is used to login into the Gerrit
WebUI.

This task is only intended to be run if the configuration parameter
link:config-gerrit.html#ldap.localUsernameToLowerCase[ldap.localUsernameToLowerCase]
was set to true to achieve case insensitive LDAP login to the Gerrit
WebUI.

Please be aware that the conversion of the local usernames to lower
case can't be undone.

The program will produce errors if there are accounts that have the
same local username, but with different case. In this case the local
username for these accounts is not converted to lower case.

This task can run in the background concurrently to the server if the
database is MySQL or PostgreSQL. If the database is H2, this task
must be run by itself.

== OPTIONS

-d::
--site-path::
	Location of the gerrit.config file, and all other per-site
	configuration data, supporting libraries and log files.

--threads::
	Number of threads to perform the scan work with.  Defaults to
	twice the number of CPUs available.

== CONTEXT
This command can only be run on a server which has direct
connectivity to the metadata database.

== EXAMPLES
To convert the local username of every account to lower case:

====
	$ java -jar gerrit.war LocalUsernamesToLowerCase -d site_path
====

== SEE ALSO

* Configuration parameter link:config-gerrit.html#ldap.localUsernameToLowerCase[ldap.localUsernameToLowerCase]

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
