| 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`. |
| |
| Delegating group |
| ---------------- |
| 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](@URL@Documentation/dev-plugins.html#configuring-groups). |
| |
| `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 |
| ``` |