gerrit ls-groups
================

NAME
----
gerrit ls-groups - List groups visible to caller

SYNOPSIS
--------
--
'ssh' -p <port> <host> 'gerrit ls-groups'
  [--project <NAME> | -p <NAME>]
  [--user <NAME> | -u <NAME>]
  [--owned]
  [--visible-to-all]
  [--type {internal | system}]
  [-q <GROUP>]
  [--verbose | -v]
--

DESCRIPTION
-----------
Displays the list of group names, one per line, that are visible to
the account of the calling user.

If the caller is a member of the privileged 'Administrators' group,
all groups are listed.

ACCESS
------
Any user who has configured an SSH key.

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

All non-printable characters (ASCII value 31 or less) are escaped
according to the conventions used in languages like C, Python, and Perl,
employing standard sequences like `\n` and `\t`, and `\xNN` for all
others. In shell scripts, the `printf` command can be used to unescape
the output.

OPTIONS
-------
--project::
-p::
	Name of the project for which the groups should be listed. Only
	groups are listed for which any permission is set on this project
	(or for which a permission is inherited from a parent project).
	Multiple --project options may be specified to specify additional
	projects. In this case all groups are listed that have a
	permission for any of the specified projects.
+
This option can't be used together with the '--user' option.

--user::
-u::
	User for which the groups should be listed. Only groups are
	listed that contain this user as a member.
+
The calling user can list the groups for the own user or must be a
member of the privileged 'Administrators' group to list the groups
for other users.
+
This option can't be used together with the '--project' option.

--owned::
	Lists only the groups that are owned by the user that was specified
	by the `--user` option or if no user was specified the groups that
	are owned by the calling user.

--visible-to-all::
	Displays only groups that are visible to all registered users
	(groups that are explicitly marked as visible to all registered
	users).

--type::
	Display only groups of the specified type. If not specified,
	groups of all types are displayed. Supported types:
+
--
`internal`:: Any group defined within Gerrit.
`system`:: Any system defined and managed group.
--

-q::
	Group that should be inspected. The `-q` option can be specified
	multiple times to define several groups to be inspected. If
	specified the listed groups will only contain groups that were
	specified to be inspected. This is e.g. useful in combination with
	the `--owned` and `--user` options to check whether a group is
	owned by a user.

--verbose::
-v::
	Enable verbose output with tab-separated columns for the
	group name, UUID, description, owner group name, owner group UUID
	and whether the group is visible to all (`true` or `false`).
+
If a group has been "orphaned", i.e. its owner group UUID refers to a
nonexistent group, the owner group name field will read `n/a`.

EXAMPLES
--------

List visible groups:
=====
	$ ssh -p 29418 review.example.com gerrit ls-groups
	Administrators
	Anonymous Users
	MyProject_Committers
	Project Owners
	Registered Users
=====

List all groups for which any permission is set for the project
"MyProject":
=====
	$ ssh -p 29418 review.example.com gerrit ls-groups --project MyProject
	MyProject_Committers
	Project Owners
	Registered Users
=====

List all groups which are owned by the calling user:
=====
	$ ssh -p 29418 review.example.com gerrit ls-groups --owned
	MyProject_Committers
	MyProject_Verifiers
=====

Check if the calling user owns the group `MyProject_Committers`. If
`MyProject_Committers` is returned the calling user owns this group.
If the result is empty, the calling user doesn't own the group.
=====
	$ ssh -p 29418 review.example.com gerrit ls-groups --owned -q MyProject_Committers
	MyProject_Committers
=====

Extract the UUID of the 'Administrators' group:

=====
	$ ssh -p 29418 review.example.com gerrit ls-groups -v | awk '-F\t' '$1 == "Administrators" {print $2}'
	ad463411db3eec4e1efb0d73f55183c1db2fd82a
=====

Extract and expand the multi-line description of the 'Administrators'
group:

=====
	$ printf "$(ssh -p 29418 review.example.com gerrit ls-groups -v | awk '-F\t' '$1 == "Administrators" {print $3}')\n"
	This is a
	multi-line
	description.
=====

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

SEARCHBOX
---------
