blob: 35e87a6a5e814560d7dbaa70cc144272558fe58f [file] [log] [blame] [view]
---
title: " gerrit create-project"
sidebar: cmd_sidebar
permalink: cmd-create-project.html
---
## NAME
gerrit create-project - Create a new hosted project
## SYNOPSIS
>
>
> ssh -p <port> <host> gerrit create-project
> [--owner <GROUP> … | -o <GROUP> …]
> [--parent <NAME> | -p <NAME> ]
> [--suggest-parents | -S ]
> [--permissions-only]
> [--description <DESC> | -d <DESC>]
> [--submit-type <TYPE> | -t <TYPE>]
> [--use-contributor-agreements | --ca]
> [--use-signed-off-by | --so]
> [--use-content-merge]
> [--create-new-change-for-all-not-in-target]
> [--require-change-id | --id]
> [[--branch <REF> | -b <REF>] …]
> [--empty-commit]
> [--max-object-size-limit <N>]
> [--plugin-config <PARAM> …]
> { <NAME> }
## 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 the privileged *Administrators* group, or
have been granted [the *Create Project* global
capability](access-control.html#capability_createProject).
## SCRIPTING
This command is intended to be used in scripts.
## OPTIONS
- \<NAME\>
Required; name of the new project to create. If name ends with
`.git` the suffix will be automatically removed.
- \--branch; -b
Name of the initial branch(es) in the newly created project. Several
branches can be specified on the command line. If several branches
are specified then the first one becomes HEAD of the project. If
none branches are specified then default value (*master*) is used.
- \--owner; -o
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.
- \--parent; -p
Name of the parent project to inherit access rights through. If not
specified, the parent is set to the default project `All-Projects`.
- \--suggest-parents; -S
Suggest parent candidates. This option cannot be used with other
arguments. Print out a list of projects that are already parents to
other projects, thus it can help the user find a suitable parent for
the new project.
- \--permissions-only
Create the project only to serve as a parent for other projects. The
new project’s Git repository will be initialized to have *HEAD*
point to *refs/meta/config*.
- \--description; -d
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; -t
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.
- REBASE\_IF\_NECESSARY: rebase the commit when required.
- REBASE\_ALWAYS: always rebase the commit including dependencies.
- MERGE\_ALWAYS: always create a merge commit.
- CHERRY\_PICK: always cherry-pick the commit.
Defaults to MERGE\_IF\_NECESSARY unless
[repository.\<name\>.defaultSubmitType](config-gerrit.html#repository.name.defaultSubmitType)
is set to a different value. For more details see [Submit
Types](project-configuration.html#submit_type).
- \--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; --ca
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
\--so: 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.
- \--create-new-change-for-all-not-in-target
\--ncfa: If enabled, a new change is created for every commit that
is not in the target branch. If the pushed commit is a merge commit,
this flag is ignored for that push. To avoid accidental creation of
a large number of open changes, this option also does not accept
merge commits in the commit chain. Disabled by default.
- \--require-change-id; --id
Require a valid [Change-Id](user-changeid.html) footer in any commit
uploaded for review. This does not apply to commits pushed directly
to a branch or tag.
- \--empty-commit
Creates an initial empty commit for the Git repository of the
project that is newly created.
- \--max-object-size-limit
Define maximum Git object size for this project. Pushes containing
an object larger than this limit will be rejected. This can be used
to further limit the global
[receive.maxObjectSizeLimit](config-gerrit.html#receive.maxObjectSizeLimit)
and cannot be used to increase that globally set limit.
Common unit suffixes of *k*, *m*, or *g* are supported.
- \--plugin-config
A plugin configuration parameter that should be set for this
project. The plugin configuration parameter must be specified in the
format *\<plugin-name\>.\<parameter-name\>=\<value\>*. Only
parameters that are explicitly declared by a plugin can be set.
Multiple `--plugin-config` options can be specified to set multiple
plugin parameters.
## EXAMPLES
Create a new project called
`tools/gerrit`:
```
$ ssh -p 29418 review.example.com gerrit create-project tools/gerrit.git
```
Create a new project with a
description:
```
$ ssh -p 29418 review.example.com gerrit create-project 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
If the replication plugin is installed, the plugin will attempt to
perform remote repository creation 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.
A custom extension or plugin may also be developed to implement the
NewProjectCreatedListener extension point and handle custom logic for
remote repository creation.
## SEE ALSO
- [Project Configuration](project-configuration.html)
## GERRIT
Part of [Gerrit Code Review](index.html)
## SEARCHBOX