从 Bitbucket 服务器导入您的项目

note此过程不同于从 Bitbucket Cloud 导入

从 Bitbucket Server,您可以导入:

  • 仓库描述
  • Git 仓库数据
  • 拉取请求
  • 拉取请求评论

导入时,将保留仓库公开访问权限。如果仓库在 Bitbucket 中是私有的,也会在极狐GitLab 中创建为私有的。

导入您的 Bitbucket 仓库

  • 重新导入项目功能引入于极狐GitLab 15.9。
  • 导入审核者功能引入于极狐GitLab 16.3。

您可以将 Bitbucket 仓库导入极狐GitLab。

先决条件

所需权限由开发者变更为维护者于 16.0 版本,并向后移植到 15.11.1 版本和 15.10.5 版本。

  • 必须启用 Bitbucket Server 导入源。如果未启用,请让您的管理员启用它。SaaS 默认启用 Bitbucket Server 导入源。
  • 至少是要导入到的目标组的 Maintainer 角色。

导入仓库

要导入您的 Bitbucket 仓库:

  1. 登录极狐GitLab。
  2. 在左侧边栏中,选择 搜索或转到 > 查看我的所有项目
  3. 选择 新建项目
  4. 选择 导入项目
  5. 选择 Bitbucket 服务器
  6. 登录 Bitbucket 并授予极狐GitLab 访问您的 Bitbucket 账户的权限。
  7. 选择要导入的项目,或导入所有项目。您可以按名称过滤项目,并选择要导入每个项目的命名空间。

不导入的事项

不导入以下数据:

  • 拉取请求批准
  • Markdown 中的附件
  • 任务列表
  • Emoji 回应

导入且被更改的事项

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

  • 极狐GitLab 不允许对任意代码行进行评论。任何越界的 Bitbucket 评论都将作为评论插入到合并请求中。
  • Bitbucket 服务器允许多个主题级别。导入器将其折叠成一个主题并引用原始评论的一部分。
  • 拒绝的拉取请求具有无法访问的提交,会阻止导入器生成正确的差异。这些拉取请求显示为空更改。
  • 项目过滤不支持模糊搜索。仅支持以匹配字符串开头或完全匹配的字符串。

用户指派

先决条件: 具有管理员访问权限的身份验证令牌。

当议题和拉取请求正在导入时,导入器会尝试在极狐GitLab 用户数据库中,使用已确认的电子邮件地址查找作者的电子邮件地址。如果没有此类用户可用,则将项目创建者设置为作者。导入器在评论中附加注释来标记原始创建者。

如果它们不存在,导入器会创建任何新的命名空间(群组)。如果采用命名空间,仓库将在启动导入过程的用户的命名空间下导入。

按用户名指派用户

  • 引入于 13.4 版本,功能标志名为 bitbucket_server_user_mapping_by_username。默认禁用。
  • 不推荐用于生产。
在私有化部署的极狐GitLab 和 JihuLab.com 上,默认情况下此功能不可用。要使其可用,管理员可以启用名为 bitbucket_server_user_mapping_by_username功能标志。此功能尚未准备好用于生产使用。

启用此功能后,导入器会尝试在极狐GitLab 用户数据库中使用作者的以下数据查找用户:

  • username
  • slug
  • displayName

如果没有用户匹配这些属性,则将项目创建者设置为作者。

故障排查

通用

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

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

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

未导入 LFS 对象

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

拉取请求丢失

导入大型项目会产生一个可能消耗大量内存的进程。有时,您可以在 Sidekiq 日志 中看到诸如 Sidekiq worker RSS out of range 的消息。这可能意味着 MemoryKiller 正在中断 RepositoryImportWorker,因为它使用了太多内存。

要解决此问题,请使用自定义环境变量暂时将 SIDEKIQ_MEMORY_KILLER_MAX_RSS 环境变量从默认的 2000000 增加到更大值如 3000000。 在决定增加 SIDEKIQ_MEMORY_KILLER_MAX_RSS 之前,请考虑系统上的内存限制。