从 Bitbucket 服务器导入您的项目

  • 重新导入项目的能力引入于极狐GitLab 15.9。
  • 导入审核者功能引入于极狐GitLab 16.3。
  • 支持拉取请求审核者导入的功能引入于极狐GitLab 16.7。
  • 在某些导入的条目上展示 导入的 徽章引入于极狐GitLab 17.2。

从 Bitbucket Server 导入项目到极狐GitLab。

先决条件

  • 所需权限由开发者变更为维护者于 16.0 版本,并向后移植到 15.11.1 版本和 15.10.5 版本。
  • 必须启用 Bitbucket Server 导入源。如果未启用,请让您的管理员启用它。SaaS 默认启用 Bitbucket Server 导入源。
  • 至少是要导入到的目标组的 Maintainer 角色。
  • 具有管理员访问权限的 Bitbucket Server 令牌,有些数据不会被导入。

导入仓库

要导入您的 Bitbucket 仓库:

  1. 登录极狐GitLab。
  2. 在左侧边栏中,选择 创建新的 ( ) and 新项目/仓库
  3. 选择 导入项目
  4. 选择 Bitbucket Server
  5. 登录 Bitbucket 并赋予极狐GitLab 访问 Bitbucket 账号的权限。
  6. 选择要导入的项目或导入全部项目。您可以通过名称进行项目过滤并为每个导入的项目选择命名空间。
  7. 导入单个项目:
    • 首次:选择 导入
    • 再次:选择 重导入。指定新的名称并再次选择 重导入。重导入会为源项目创建一个新的副本。

导入的事项

  • 仓库描述
  • Git 仓库数据
  • 拉取请求,包括评论、用户提及、审核者和合并事件
  • LFS 对象

当导入时:

  • 仓库的公开访问会被保留。如果仓库在 Bitbucket 上是私有的,它在极狐GitLab 上也将是私有的。
  • 导入的合并请求和评论在极狐GitLab 上会有一个 导入的 徽章。

当关闭和合并的拉取请求被导入时,仓库中不存在的提交 SHA 会从 Bitbucket Server 拉取,以确保拉取请求有对应的提交:

  • 源提交 SHA 以格式 refs/merge-requests/<iid>/head 带引用被保存。
  • 目标提交 SHA 以格式 refs/keep-around/<SHA> 带引用被保存。

如果源提交在仓库中不存在,导入器会尝试将源提交设置为合并提交的 SHA。

不会被导入的事项

以下条目不会被导入:

  • Markdown 中的附件
  • 任务列表
  • 表情反应
  • 拉取请求审核
  • 拉取请求的审核规则

导入且被更改的事项

以下是导入时会被更改的事项:

  • 极狐GitLab 不允许对任意代码行进行评论。任何越界的 Bitbucket 评论都将作为评论插入到合并请求中。
  • 多个主题级别会被折叠刀一个主题中,而且引用会被添加为原始评论的一部分。
  • 项目过滤不支持模糊搜索。仅支持以匹配字符串开头或完全匹配的字符串。

用户指派

  • 通过邮件地址或用户名导入审核者引入于极狐GitLab 16.7。
  • 匹配用户提及与极狐GitLab 用户的功能引入于极狐GitLab 16.8。
  • 在极狐GitLab 17.1 中变更为仅通过邮件地址导入审核者。
对私有化部署的极狐GitLab,匹配用户提及与极狐GitLab 用户不可用。要让其为每个用户可用,管理员可以启用名为 bitbucket_server_import_stage_import_users功能标志。在 JihuLab.com 上,此功能不可用。

当议题和拉取请求正在导入时,导入器尝试使用极狐GitLab 用户数据库中确认的邮件地址匹配 Bitbucket Server 用户的邮件地址。如果未找到用户:

  • 使用项目创建器取而代之。导入程序会在评论中添加一条注释以标记原始创建者。
  • 对拉取请求审核者,未指派审核者。
  • 对拉取请求批准者,未添加批准。

拉取请求描述和注释中的 @mentions 通过使用用户的电子邮件地址与 Bitbucket Server 上的用户资料相匹配。如果在极狐GitLab 上未发现具有相同邮件地址的用户,@mention 会变为静态的。为了让用户能够被匹配,他们必须具有一个极狐GitLab 角色,该角色至少能为该项目提供读取权限。

如果项目是公开的,极狐GitLab 只匹配那些被邀请到项目中的用户。

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

通过用户名进行用户指派

  • 不推荐生产使用
在私有化部署和 JihuLab.com 上,此功能默认清情况下不可用。要使其可用,管理员需要启用功能标志 bitbucket_server_user_mapping_by_username。此功能并为生产就绪。

开启此功能后,用户邮件地址匹配被禁用。相反地,导入程序将极狐GitLab 用户数据库中的用户与 Bitbucket Server 的用户进行匹配:

  • username
  • slug
  • displayName

故障排查

通用

如果基于 GUI 的导入器不起作用,您可以尝试:

  • 使用 GitLab Import API Bitbucket 服务器端点。
  • 设置仓库镜像,提供详细的错误输出。

您还可以查看 Bitbucket Cloud 的故障排除部分

未导入 LFS 对象

如果项目导入完成,但无法下载或克隆 LFS 对象,则您可能正在使用包含特殊字符的密码或个人访问令牌。

由于无效/未解决的宿主机地址或导入 URL 被阻塞而导致的导入失败

如果项目导入因为错误信息 Importing the project failed: Import url is blocked 导致失败,即使和 Bitbucket server 的初始化连接是成功的,Bitbucket server 或反向代理可能没有正确配置。

要对此问题进行故障排查,使用 项目 API来检查新创建的项目,并定位至项目的 improt_url 值。

此值表示 Bitbucket 服务器提供的用于导入的 URL。如果该 URL 无法公开解析,你可能会收到无法解析地址的错误。

要解决这个问题,请确保 Bitbucket 服务器知晓任何代理服务器,因为代理服务器会影响 Bitbucket 构建和使用 URL 的方式。更多信息,查看代理和安全的 Bitbucket