046.md 7.8 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
# Subgroups

> 原文:[https://docs.gitlab.com/ee/user/group/subgroups/](https://docs.gitlab.com/ee/user/group/subgroups/)

*   [Overview](#overview)
*   [Creating a subgroup](#creating-a-subgroup)
*   [Membership](#membership)
    *   [Overriding the ancestor group membership](#overriding-the-ancestor-group-membership)
*   [Mentioning subgroups](#mentioning-subgroups)
*   [Limitations](#limitations)

# Subgroups[](#subgroups "Permalink")

在 GitLab 9.0 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2772) .

GitLab 支持多达 20 个级别的子组,也称为嵌套组或层次结构组. 组的级别.

通过使用子组,您可以执行以下操作:

*   **独立的内部/外部组织.** 由于每个组都有自己的可见性级别,因此您可以在同一保护范围内为不同目的托管组.
*   **组织大型项目.** 对于大型项目,子组可能会更容易分隔部分源代码的权限.
*   **使管理人员和控制可见性变得更加容易.** 根据人们的组[成员身份,](#membership)赋予他们不同的[权限](../../permissions.html#group-members-permissions) .

有关组和项目中允许的权限的更多信息,请参见[可见性级别](../../../development/permissions.html#general-permissions) .

## Overview[](#overview "Permalink")

一个组中可以有许多子组,而同一组中只能有一个直接父组. 它类似于目录行为或嵌套项目列表:

*   第一组
    *   1.1 组
    *   1.2 组
        *   1.2.1 组
        *   1.2.2 组
            *   组 1.2.2.1

在一个真实的示例中,设想维护一个 GNU / Linux 发行版,其中第一个组是发行版的名称,随后的组按如下所示拆分:

*   Organization Group - GNU/Linux distro
    *   类别子组-包
        *   (项目)配套 01
        *   (项目)配套 02
    *   类别子组-软件
        *   (项目)核心
        *   (项目)CLI
        *   (项目)Android 应用
        *   (项目)iOS 应用
    *   类别子组-红外线工具
        *   (项目)Ansible 剧本

Another example of GitLab as a company would be the following:

*   组织组-GitLab
    *   类别子组-市场营销
        *   (项目)设计
        *   (项目)一般
    *   类别子组-软件
        *   (项目)GitLab CE
        *   (项目)GitLab EE
        *   (项目)Omnibus GitLab
        *   (项目)GitLab Runner
        *   (项目)GitLab Pages 守护程序
    *   类别子组-红外线工具
        *   (项目)厨师食谱
    *   类别子组-执行团队

* * *

当执行诸如在子组之间转移或导入项目的操作时,其行为与在`group/project`级别执行这些操作时的行为相同.

## Creating a subgroup[](#creating-a-subgroup "Permalink")

要创建子组,您必须是该组的所有者或维护者,具体取决于该组的设置.

默认情况下,在以下位置创建的组:

*   GitLab 12.2 或更高版本允许所有者和维护者创建子组.
*   GitLab 12.1 或更早版本仅允许所有者创建子组.

此设置可以是所有者或管理员的任何组.

有关更多信息,请检查[权限表](../../permissions.html#group-members-permissions) . 有关不允许用作组名的单词列表,请参见[保留名称](../../reserved_names.html) .

如果将子组明确地作为所有者(或维护者,如果启用了此设置)添加到直接父组,则用户始终可以创建子组,即使管理员在其设置中禁用了组创建也是如此.

要创建一个子组:

1.  在组的仪表板中,展开" **新建项目**拆分"按钮,选择" **新建子组"** ,然后单击" **新建子组"**按钮.

    [![Subgroups page](img/c3c27ff673c33bcd50004c2adb617d5f.png)](img/create_subgroup_button.png)

2.  像平常一样创建一个新组. 请注意,直接父组名称空间在" **组路径"**下是固定的. 可见性级别可以与直接父组不同.

    [![Subgroups page](img/7fb24fed9f39dcdabb530523bcb8dc08.png)](img/create_new_group.png)

3.  单击**创建组**按钮,您将被带到新组的仪表板页面.

按照相同的过程创建任何后续组.

## Membership[](#membership "Permalink")

将成员添加到子组时,它们将从父组继承成员资格和权限级别. 如果您是其父级成员之一,则该模型允许访问嵌套组.

在亚组可以用乔布斯的管道[运动员](../../../ci/runners/README.html)注册到父组(S). 这意味着为父组配置的机密可用于子组作业.

此外,属于子组的项目的维护者可以查看注册到父组的 Runner 的详细信息.

成员的组权限只能由所有者更改,并且只能在添加成员的组的" **成员"**页面上进行.

您可以通过查看组的" **成员"**页面来确定成员是否从父组继承了权限.

[![Group members page](img/e18ff80d06980688066f9ec9404bd2da.png)](img/group_members.png)

从上图可以得出以下几点:

*   有 5 位成员可以访问第`four`组.
*   User0 是一个 Reporter,已从组`four`的层次结构上方的组`one`继承了其权限.
*   用户 1 是一个开发并已继承组他们的权限`one/two`其是组的层级以上`four` .
*   用户 2 是一个开发并已继承组他们的权限`one/two/three`这是组的层级以上`four` .
*   对于 User3,没有任何父组的指示,因此它们属于`four`组,即我们正在检查的组.
*   管理员是**所有**子组的所有者和成员,因此,与 User3 一样,没有任何祖先组的迹象.

[](https://gitlab.com/gitlab-org/gitlab/-/issues/21727) GitLab 12.6 中,您可以使用右侧的下拉列表过滤此列表:

[![Group members filter](img/8215c374294289cd2bd24399439403fd.png)](img/group_members_filter_v12_6.png)

*   **仅显示直接成员**仅显示 Administrator 和 User3,因为这是属于`four`组的唯一用户,这是我们正在检查的用户.
*   **仅显示继承的成员将**显示 User0,User1 和 User2,无论层次结构上方的哪个组都是继承权限的来源.

### Overriding the ancestor group membership[](#overriding-the-ancestor-group-membership "Permalink")

**注意:**您必须是网上论坛的所有者,才能向其中添加成员.**注意:**子组中的用户权限不能低于其任何祖先组中的权限. 因此,您不能针对子组的祖先组减少用户的权限.

要覆盖用户的祖先组(他们被添加到的第一个组)的成员资格,请将该用户再次以更高的权限集添加到新的子组中.

例如,如果首先使用具有开发者权限将 User0 添加到组`group-1/group-1-1` ,则它们将在组`group-1/group-1-1`每个其他子`group-1/group-1-1`继承这些权限. 要为他们提供维护者访问`group-1/group-1-1/group1-1-1` ,您可以将他们再次添加为该维护者. 从该组中删除它们,权限将回退到祖先组的权限.

## Mentioning subgroups[](#mentioning-subgroups "Permalink")

在问题,提交和合并请求中提及组( `@group` )将通知该组的所有成员. 现在有了子组,如果您想拆分组的结构,将有更精细的支持. 提及方式与以前一样,您可以选择要通知的人群.

[![Mentioning subgroups](img/0d1089161431c5f21751458027d84535.png)](img/mention_subgroups.png)

## Limitations[](#limitations "Permalink")

以下是您无法对子组进行操作的列表:

*   [GitLab 页面](../../project/pages/index.html)支持在一个子组下托管的项目,但不支持子组网站下的项目. 这意味着,尽管您可以在子组下拥有项目网站,但是只有最高级别的组才支持[组网站](../../project/pages/getting_started_part_one.html#gitlab-pages-default-domain-names) .
*   不能与作为该项目所属组的祖先的组共享项目.这意味着您只能在沿层次结构走时共享. 例如, `group/subgroup01/project` **不能**`group`共享,但是可以与`group/subgroup02``group/subgroup01/subgroup03`共享.