群组导入/导出 API

引入于极狐GitLab 12.8 版本。

群组导入/导出允许您导出群组结构并将其导入到新位置。当使用项目导入/导出,您可以保留具有群组关系的连接,注入项目议题和群组史诗之间的连接。

群组导出包括以下信息:

  • 群组里程碑
  • 群组看板
  • 群组标签
  • 群组徽章
  • 群组成员
  • 子群组。每个子群组包括以上所有信息。
  • 群组 wikis

安排新导出

开始一个新群组导出。

POST /groups/:id/export
参数 类型 是否必需 描述
id integer/string 授权用户拥有的群组 ID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/export"
{
  "message": "202 Accepted"
}

导出下载

下载完成的导出数据。

GET /groups/:id/export/download
参数 类型 是否必需 描述
id integer/string 授权用户拥有的群组 ID
group=1
token=secret
curl --request GET\
     --header "PRIVATE-TOKEN: ${token}" \
     --output download_group_${group}.tar.gz \
     "https://gitlab.example.com/api/v4/groups/${group}/export/download"
ls *export.tar.gz
2020-12-05_22-11-148_namespace_export.tar.gz

导出群组所需时间可能依赖于群组的大小。结果可能会是以下任何一种:

  • 导出的内容(如果成功的话)
  • 404 信息

导入文件

POST /groups/import
参数 类型 是否必需 描述
name string 导入的群组名称
path string 新群组的名称和路径
file string 要上传的文件
parent_id integer 导入群组的父群组 ID。如果不提供则默认为当前用的命名空间。

从您的文件系统上传一个文件,请使用 --form 参数。这会让 cURL 使用 Content-Type: multipart/form-data 头信息来发送数据。file= 参数必须指向您文件系统的一个文件,并在前面加上 @。比如:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "name=imported-group" --form "path=imported-group" \
     --form "file=@/path/to/file" "https://gitlab.example.com/api/v4/groups/import"
note管理员可以设置最大的导入文件大小,默认为 0(无限制)。作为管理员,您可以修改最大导入文件大小。在应用程序设置 API管理员中使用 max_import_size 选项即可。在极狐Gitlab 13.8 中将默认值从 50M 更改成了 0。

重要说明

注意以下几点:

  • 为了保留导入项目的群组关系,要先执行群组导入/导出,以便让项目导入到期望的群组结构中。
  • 导入的群组会被赋予私有的可见度级别,除非导入到一个父群组。
  • 如果导入到父群组中,子群组会继承同等的可见度级别,除非有其他的严格限制。
  • 为了保留成员列表以及他们在导入群组中对应的权限,要审核这些群组中的用户。在导入到期望的群组之前,要确保这些用户已经存在。