Help us learn about your current experience with the documentation. Take the survey.

从 Bitbucket Cloud 导入你的项目

  • 层级:免费版、高级版、旗舰版
  • 提供方式:GitLab.com、GitLab 自托管、GitLab 专用版

将你的项目从 Bitbucket Cloud 导入到 GitLab。

Bitbucket 导入器可以导入:

  • 仓库描述
  • Git 仓库数据
  • 问题(包括评论)
  • 拉取请求(包括评论)
  • 里程碑
  • Wiki
  • 标签
  • 里程碑
  • LFS 对象

Bitbucket 导入器无法导入:

  • 拉取请求审批
  • 审批规则

导入时:

  • 拉取请求和问题的引用会被保留。
  • 仓库的公开访问权限会被保留。如果仓库在 Bitbucket 中是私有的,在 GitLab 中也会被创建为私有。
  • 导入的问题、合并请求和评论在 GitLab 中会有一个 已导入 标识。

Bitbucket Cloud 导入器仅适用于 Bitbucket.org,不适用于 Bitbucket Server(也称为 Stash)。如果你尝试从 Bitbucket Server 导入项目,请使用 Bitbucket Server 导入器

当导入问题、拉取请求和评论时,Bitbucket 导入器会使用作者/被指派者的 Bitbucket 昵称,并尝试在 GitLab 中找到相同的 Bitbucket 身份。如果不匹配或用户在 GitLab 数据库中未找到,则项目创建者(通常是启动导入流程的当前用户)将被设置为作者,但会保留关于原始 Bitbucket 作者的问题引用。

对于拉取请求:

  • 如果源 SHA 在仓库中不存在,导入器会尝试将源提交设置为合并提交 SHA。
  • 合并请求的被指派者设置为作者。审阅者设置为与 GitLab 中 Bitbucket 身份匹配的用户名。
  • GitLab 中的合并请求可以是 openedclosedmerged

对于问题:

  • 会添加一个标签,对应于 Bitbucket 上的问题类型。可以是 bugenhancementproposaltask
  • 如果 Bitbucket 上的问题是 resolvedinvalidduplicatewontfixclosed 之一,则问题在 GitLab 中会被关闭。

导入器会创建任何新的命名空间(组),如果它们不存在,或者在命名空间已被占用的情况下,仓库会在启动导入流程的用户命名空间下导入。

前置条件

  • 必须启用 Bitbucket Cloud 集成。如果未启用该集成,请询问你的 GitLab 管理员 启用它。Bitbucket Cloud 集成在 GitLab.com 上默认启用。
  • 必须启用 Bitbucket Cloud 导入源。如果未启用,请询问你的 GitLab 管理员启用它。Bitbucket Cloud 导入源在 GitLab.com 上默认启用。
  • 在目标组上至少需要 Maintainer 角色。
  • Bitbucket 中的拉取请求必须具有相同的源和目标项目,并且不能来自项目的分支。 否则,拉取请求将作为空的合并请求导入。

用户映射贡献的要求

为了映射用户贡献,每个用户必须在项目导入前完成以下操作:

  1. 验证 Bitbucket 账户设置 中的用户名 是否与 Atlassian 账户设置 中的公开名称匹配。 如果不匹配,请修改 Atlassian 账户设置中的公开名称,使其与 Bitbucket 账户设置中的用户名匹配。

  2. GitLab 配置文件服务登录 中连接你的 Bitbucket 账户。

导入你的 Bitbucket 仓库

  1. 登录 GitLab。

  2. 在左侧边栏顶部,选择 新建 ( plus ) 和 新建项目/仓库

  3. 选择 导入项目

  4. 选择 Bitbucket Cloud

  5. 登录 Bitbucket,然后选择 授权访问 以授予 GitLab 访问你的 Bitbucket 账户的权限。

  6. 选择要导入的项目,或导入所有项目。 你可以按名称过滤项目,并选择每个项目导入到的命名空间。

  7. 导入项目:

    • 首次导入:选择 导入
    • 再次导入:选择 重新导入。指定新名称并再次选择 重新导入。重新导入会创建源项目的新副本。

生成 Bitbucket Cloud 应用密码

如果你想使用 GitLab REST API 导入 Bitbucket Cloud 仓库,你必须创建一个 Bitbucket Cloud 应用密码。

生成 Bitbucket Cloud 应用密码:

  1. 访问 https://bitbucket.org/account/settings/

  2. 访问管理 部分,选择 应用密码

  3. 选择 创建应用密码

  4. 输入密码名称。

  5. 选择至少以下权限:

    账户:邮箱、读取
    项目:读取
    仓库:读取
    拉取请求:读取
    问题:读取
    Wiki:读取和写入
  6. 选择 创建

故障排除

如果你拥有多个 Bitbucket 账户

请确保登录到正确的账户。

如果你不小心用错误的账户启动了导入流程,请按照以下步骤操作:

  1. 撤销 GitLab 对你的 Bitbucket 账户的访问权限,基本上是逆转以下流程:导入你的 Bitbucket 仓库

  2. 退出 Bitbucket 账户。遵循前一步链接的流程。

尽管名称匹配但用户映射失败

为了使用户映射工作, Bitbucket 账户设置中的用户名必须与 Atlassian 账户设置中的公开名称匹配。如果这些名称匹配但用户映射仍然失败,用户可能在连接其 Bitbucket 账户后修改了其 Bitbucket 用户名,在 GitLab 配置文件服务登录 中。

要解决此问题,用户必须验证其在 GitLab 数据库中的 Bitbucket 外部 UID 是否与其 当前的 Bitbucket 公开名称匹配,如果不匹配则重新连接:

  1. 使用 API 获取当前认证的用户

  2. 在 API 响应中,identities 属性包含存在于 GitLab 数据库中的 Bitbucket 账户。如果 extern_uid 与当前 Bitbucket 公开名称不匹配,则 用户应在 GitLab 配置文件服务登录 中重新连接其 Bitbucket 账户。

  3. 重新连接后,用户应再次使用 API 验证其在 GitLab 数据库中的 extern_uid 现在是否与其当前的 Bitbucket 公开名称匹配。

然后,导入器必须 删除已导入的项目 并再次导入。