gerrit set-account
==================

NAME
----
gerrit set-account - Change an account's settings.

SYNOPSIS
--------
--
set-account [--full-name <FULLNAME>] [--active|--inactive] \
            [--add-email <EMAIL>] [--delete-email <EMAIL> | ALL] \
            [--add-ssh-key - | <KEY>] \
            [--delete-ssh-key - | <KEY> | ALL] \
            [--http-password <PASSWORD>] <USER>
--

DESCRIPTION
-----------
Modifies a given user's settings. This command can be useful to
deactivate an account, set HTTP password, add/delete ssh keys without
going through the UI.

It also allows managing email addresses, which bypasses the
verification step we force within the UI.

ACCESS
------
Caller must be a member of the privileged 'Administrators' group.

SCRIPTING
---------
This command is intended to be used in scripts.

OPTIONS
-------
<USER>::
    Required; Full name, email-address, SSH username or account id.

--full-name::
    Display name of the user account.
+
Names containing spaces should be quoted in single quotes (').
This most likely requires double quoting the value, for example
`--full-name "'A description string'"`.

--active::
    Set the account state to be active.

--inactive::
    Set the account state to be inactive. This prevents the
    user from logging in.

--add-email::
    Add another email to the user's account. This doesn't
    trigger the mail validation and adds the email directly
    to the user's account.
    May be supplied more than once to add multiple emails to
    an account in a single command execution.

--delete-email::
    Delete an email from this user's account if it exists.
    If the email provided is 'ALL', all associated emails are
    deleted from this account.
    Maybe supplied more than once to remove multiple emails
    from an account in a single command execution.

--add-ssh-key::
    Content of the public SSH key to add to the account's
    keyring.  If `-` the key is read from stdin, rather than
    from the command line.
    May be supplied more than once to add multiple SSH keys
    in a single command execution.

--delete-ssh-key::
    Content of the public SSH key to remove from the account's
    keyring or the comment associated with this key.
    If `-` the key is read from stdin, rather than from the
    command line. If the key provided is 'ALL', all
    associated SSH keys are removed from this account.
    May be supplied more than once to delete multiple SSH
    keys in a single command execution.

--http-password::
    Set the HTTP password for the user account.

EXAMPLES
--------
Add an email and SSH key to `watcher`'s account:

====
    $ cat ~/.ssh/id_watcher.pub | ssh -p 29418 review.example.com gerrit set-account --add-ssh-key - --add-email mail@example.com watcher
====

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

SEARCHBOX
---------
