This plugin enforce a project group structure and restrict project creation within this structure to project group owners only. Besides the rules the plugin enforce for the project group structure, it also enforce other naming rules like project name cannot contain spaces.
Below description of plugins functionality is not applicable if user is an administrator. Administrators continue creating projects like this plugin does not exist.
To start creating a project group structure, simply create a root project, i.e. a project which inherits rights from All-Projects
. The root project name cannot contains slashes, e.g. some-organization
and must be created with option Only serve as parent for other projects
.
Ownership of the root project is given automatically to the user who created it by adding him to a group named <root-project-name>-admins
, e.g. some-organization-admins
which is granted owner right on refs/*
references.
From this point on, only the root project owners can create projects within that structure. They can do it by creating projects that inherits rights from their root project and the project names must start with root project name, e.g. some-organization/some-project
.
Project creation can also be delegated to non-owner users by configuring delegateProjectCreationTo
in the project.config
of refs/meta/config
branch of the parent project.
The value of delegateProjectCreationTo
must be set to a group reference.
project.config
file
[plugin "@PLUGIN@"] delegateProjectCreationTo = group group_name
groups
file
group_uuid group_name
The UUID of a group can be found on the “General” tab of the group's page.
If creating-project is delegated to built-in groups, e.g. “Registered Users” group, then the value is as following:
project.config
file
[plugin "@PLUGIN@"] delegateProjectCreationTo = group Registered Users
groups
file
global:Registered-Users Registered Users
A way to edit project.config
and groups
file is from Gerrit UI. For example, to delegate project creation under orgA
root project to orgA-project-creators
group:
From main menu, click People
-> List Groups
Type orgA-project-creators
as the filter then click on orgA-project-creators
group
Copy the group UUID (example: 3d2bef3b667a577f2dd5232e0848c526efd11b1f)
From main menu, click Projects
-> List
Type orgA
as the filter then click on orgA
project
Click Edit Config
button
Add the following then click Save
-> Close
:
[plugin "@PLUGIN@"] delegateProjectCreationTo = orgA-project-creators
Click Add...
button then type and open groups
file
Add the following then click Save
-> Close
:
3d2bef3b667a577f2dd5232e0848c526efd11b1f orgA-project-creators
Click Publish
button, review, vote and submit the change to apply new configuration
Ownership of a project <project-name>
created by delegated user is given automatically to that user by adding him to a group named <project-name>-admins
. It is possible to disable granting the ownership by configuring disableGrantingProjectOwnership
in the project.config
of refs/meta/config
branch of the parent project:
[plugin "@PLUGIN@"] disableGrantingProjectOwnership = true