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>] \
[\--permissions-only] \
[\--description <DESC>] \
[\--submit-type <TYPE>] \
[\--use-content-merge] \
[\--use-contributor-agreements] \
[\--use-signed-off-by]
[\--empty-commit]

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 \--`.

\--permissions-only::
	Create the project only to serve as a parent for other
	projects.  The new project's Git repository will not be
	initialized, and cannot be cloned.

\--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-content-merge::
	If enabled, Gerrit will try to perform a 3-way merge of text
	file content when a file has been modified by both the
	destination branch and the change being submitted.  This
	option only takes effect if submit type is not
	FAST_FORWARD_ONLY.  Disabled by default.

\--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.

\--empty-commit:
	Creates an initial empty commit for the Git repository of the
	project that is newly created.


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]
