gerrit create-project
=====================

NAME
----
gerrit create-project - Create a new hosted project

SYNOPSIS
--------
[verse]
'ssh' -p <port> <host> 'gerrit create-project' \
\--name <NAME> \
[--branch <REF>] \
[\--owner <GROUP> ...] \
[\--parent <NAME>] \
[\--description <DESC>] \
[\--submit-type <TYPE>] \
[\--use-contributor-agreements] \
[\--use-signed-off-by]

DESCRIPTION
-----------
Creates a new bare Git repository under `gerrit.basePath`, using
the project name supplied.  The newly created repository is empty
(has no commits), but is registered in the Gerrit database so that
the initial commit may be uploaded for review, or initial content
can be pushed directly into a branch.

If replication is enabled, this command also connects to each of
the configured remote systems over SSH and uses command line git
on the remote system to create the empty repository.


ACCESS
------
Caller must be a member of any of the groups defined by
repository.*.createGroup in gerrit.config.

If there is no such declaration, caller is required to be a member
of the privileged 'Administrators' group.

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

OPTIONS
-------
\--name::
	Required; name of the project to create.  If name ends with
	`.git` the suffix will be automatically removed.

\--branch::
	Name of the initial branch in the newly created project.
	Defaults to 'master'.

\--owner::
	Name of the group(s) which will initially own this repository.
	The specified group(s) must already be defined within Gerrit.
	Several groups can be specified on the command line.
+
Defaults to what is specified by repository.*.ownerGroup
in gerrit.config. If no such declaration(s) exist,
repository.*.createGroup will be used. If they don't exist,
`Administrators` will be used.

\--parent::
	Name of the parent project to inherit access rights
	through. If not specified, the parent is set to the default
	project `\-- All Projects \--`.

\--description::
	Initial description of the project.  If not specified,
	no description is stored.
+
Description values containing spaces should be quoted in single quotes
(\').  This most likely requires double quoting the value, for example
`\--description "\'A description string\'"`.

\--submit-type::
	Action used by Gerrit to submit an approved change to its
	destination branch.  Supported options are:
+
* FAST_FORWARD_ONLY: produces a strictly linear history.
* MERGE_IF_NECESSARY: create a merge commit when required.
* MERGE_ALWAYS: always create a merge commit.
* CHERRY_PICK: always cherry-pick the commit.

+
Defaults to MERGE_IF_NECESSARY.  For more details see
link:project-setup.html#submit_type[Change Submit Actions].

\--use-contributor-agreements::
	If enabled, authors must complete a contributor agreement
	on the site before pushing any commits or changes to this
	project.  Disabled by default.

\--use-signed-off-by::
	If enabled, each change must contain a Signed-off-by line
	from either the author or the uploader in the commit message.
	Disabled by default.


EXAMPLES
--------
Create a new project called `tools/gerrit`:

====
	$ ssh -p 29418 review.example.com gerrit create-project --name tools/gerrit.git
====

Create a new project with a description:

====
	$ ssh -p 29418 review.example.com gerrit create-project --name tool.git --description "'Tools used by build system'"
====

Note that it is necessary to quote the description twice.  The local
shell needs double quotes around the value to ensure the single quotes
are passed through SSH as-is to the remote Gerrit server, which uses
the single quotes to delimit the value.

REPLICATION
-----------
The remote repository creation is performed by a Bourne shell script:

====
  mkdir -p '/base/project.git' && cd '/base/project.git' && git init --bare && git update-ref HEAD refs/heads/master
====

For this to work successfully the remote system must be able to run
arbitrary shell scripts, and must have `git` in the user's PATH
environment variable.  Administrators could also run this command line
by hand to establish a new empty repository.

SEE ALSO
--------

* link:config-replication.html[Git Replication/Mirroring]
* link:project-setup.html[Project Setup]

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