将您的项目从 Bitbucket Cloud 导入极狐GitLab

轻松将您的项目从 Bitbucket Cloud 导入极狐GitLab。

Bitbucket 导入器可以导入:

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

Bitbucket 导入器不能够导入:

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

导入时:

  • 保留对拉取请求和议题的引用。
  • 保留仓库公共访问权限。如果仓库在 Bitbucket 中是私有的,它也会在极狐GitLab 中创建为私有的。
  • 导入的议题、合并请求和评论会在极狐GitLab 中有一个 导入的 徽章。
note Bitbucket Cloud 导入器仅和 Bitbucket.org 一起工作,而不是 Bitbucket Server(也称为 Stash)。如果您尝试从 Bitbucket Server 导入项目,请使用 Bitbucket Server 导入器

当导入议题、拉取请求和评论时,Bitbucket 导入器使用作者/受让人的 Bitbucket 昵称,并尝试在极狐GitLab 中找到相同的 Bitbucket 身份。如果它们不匹配或在极狐GitLab 数据库中找不到用户,则将项目创建者(大多数情况下是启动导入过程的当前用户)设置为作者,但有关原始 Bitbucket 议题的作者的引用被保留。

对拉取请求:

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

对议题:

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

如果命名空间不存在或命名空间被占用,则导入器会创建任意新的命名空间(群组),存储库将导入到启动导入流程的用户的命名空间下。

先决条件

  • 需要维护者角色而不是开发者角色,引入于极狐GitLab 16.0,并在 GitLab 15.11.1 和 GitLab 15.10.5 中进行了回退。
  • 必需启用了Bitbucket Cloud 集成。如果集成未启用,联系您的管理员启用它。Bitbucket Cloud 集成在 JihuLab.com 上默认启用。
  • 必需启用了Bitbucket Cloud 导入源。如果未启用,联系您的管理员启用它。Bitbucket Cloud 导入源在 JihuLab.com 上默认启用。
  • 必需至少具有目标群组的维护者角色。
  • Bitbucket 上的拉取请求必须具有相同的源和目标项目,而不是从项目的派生。否则,拉取请求将作为空合并请求导入。

用户映射贡献的前提

对于用户贡献的映射,每个用户都必须在导入前完成以下工作:

  1. 验证Bitbucket 账号设置中的用户名要能够和Atlassian 账号设置中的项匹配。如果不匹配,修改 Atlassian 账号设置中的用户名以匹配 Bitbucket 账号设置中的用户名。

  2. 极狐GitLab 个人资料服务登录中连接您的 Bitbucket 账号。

导入您的 Bitbucket 仓库

  • 重新导入项目的能力引入于极狐GitLab 15.9。
  1. 登录极狐GitLab。
  2. 在导航栏左侧,在顶部,选择 创建新的 ( ) 和 新的项目/仓库
  3. 选择 导入项目
  4. 选择 Bitbucket Cloud
  5. 登录 Bitbucket 并赋予极狐GitLab 访问您 Bitbucket 账号的权限。

    Grant access

  6. 选择你想要导入的项目,或者所有项目。您可以通过名称进行项目过滤并为每个导入的项目选择命名空间。

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

生成 Bitbucket Cloud app 密码

如果您想使用极狐GitLab REST API来导入 Bitbucket Cloud 仓库,则您必需创建一个 Bitbucket Cloud app 密码。

要生成一个 Bitbucket Cloud app 密码:

  1. 前往 https://bitbucket.org/account/settings/
  2. 访问管理 中,选择 App 密码
  3. 选择 创建 app 密码
  4. 输入密码名称。
  5. 至少选择以下权限:

    Account: Email, Read
    Projects: Read
    Repositories: Read
    Pull Requests: Read
    Issues: Read
    Wiki: Read and Write
    
  6. 选择 创建

故障排查

如果您有多个 Bitbucket 账号

请确保使用正确的账号登录。

如果您已经使用错误的账号进行导入流程,请遵循以下步骤:

  1. 撤销极狐GitLab 对 Bitbucket 账号的访问,本质上就是逆转以下流程中的操作。

  2. 撤销极狐GitLab 对 Bitbucket 账号的访问,本质上就是逆转以下流程中的操作:导入您的 Bitbucket 仓库
  3. 登出 Bitbucket 账号。遵循上一步链接的流程操作。

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

要让用户映射工作,Bitbucket 账号设置中的用户名必需要和 Atlassian 账号设置中的公开名称匹配。如果这些名称匹配但是用户映射仍然失败,可能是用户在极狐GitLab 个人资料服务登录中连接到他们的 Bitbucket 账号后修改了他们的 Bitbucket 用户名。

要修复此问题,用户必需验证他们在极狐GitLab 数据库中的 Bitbucket 外部 UID 要能够和他们当前的 Bitbucket 公共名称相匹配,如果存在不匹配则需要重新连接:

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

  2. 在 API 响应中,identities 属性包含存在于极狐GitLab 数据库中的 Bitbucket 账号。如果 extern_uid 与当前 Bitbucket 公共名称不匹配,则用户应该在极狐GitLab 个人资料服务登录中重新连接他们的 Bitbucket 账号。

  3. 重连接后,用户应该再次使用 API 来验证极狐GitLab 数据库中的 extern_uid 与当前 Bitbucket 公共名称匹配。

导入器必需删除导入的项目然后再次导入。