从 Bitbucket 服务器导入您的项目
从 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 仓库:
- 登录极狐GitLab。
- 在左侧边栏中,选择 搜索或转到 > 查看我的所有项目。
- 选择 新建项目。
- 选择 导入项目。
- 选择 Bitbucket 服务器。
- 登录 Bitbucket 并授予极狐GitLab 访问您的 Bitbucket 账户的权限。
- 选择要导入的项目,或导入所有项目。您可以按名称过滤项目,并选择要导入每个项目的命名空间。
不导入的事项
不导入以下数据:
- 拉取请求批准
- Markdown 中的附件
- 任务列表
- Emoji 回应
导入且被更改的事项
以下是导入时会被更改的事项:
- 极狐GitLab 不允许对任意代码行进行评论。任何越界的 Bitbucket 评论都将作为评论插入到合并请求中。
- Bitbucket 服务器允许多个主题级别。导入器将其折叠成一个主题并引用原始评论的一部分。
- 拒绝的拉取请求具有无法访问的提交,会阻止导入器生成正确的差异。这些拉取请求显示为空更改。
- 项目过滤不支持模糊搜索。仅支持以匹配字符串开头或完全匹配的字符串。
用户指派
先决条件: 具有管理员访问权限的身份验证令牌。
当议题和拉取请求正在导入时,导入器会尝试在极狐GitLab 用户数据库中,使用已确认的电子邮件地址查找作者的电子邮件地址。如果没有此类用户可用,则将项目创建者设置为作者。导入器在评论中附加注释来标记原始创建者。
如果它们不存在,导入器会创建任何新的命名空间(群组)。如果采用命名空间,仓库将在启动导入过程的用户的命名空间下导入。
按用户名指派用户
- 引入于 13.4 版本,功能标志名为
bitbucket_server_user_mapping_by_username
。默认禁用。- 不推荐用于生产。
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
之前,请考虑系统上的内存限制。