从 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 仓库:
- 登录极狐GitLab。
- 在左侧边栏中,选择 创建新的 () and 新项目/仓库。
- 选择 导入项目。
- 选择 Bitbucket Server。
- 登录 Bitbucket 并赋予极狐GitLab 访问 Bitbucket 账号的权限。
- 选择要导入的项目或导入全部项目。您可以通过名称进行项目过滤并为每个导入的项目选择命名空间。
- 导入单个项目:
- 首次:选择 导入。
- 再次:选择 重导入。指定新的名称并再次选择 重导入。重导入会为源项目创建一个新的副本。
导入的事项
- 仓库描述
- 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 中变更为仅通过邮件地址导入审核者。
bitbucket_server_import_stage_import_users
的功能标志。在 JihuLab.com 上,此功能不可用。当议题和拉取请求正在导入时,导入器尝试使用极狐GitLab 用户数据库中确认的邮件地址匹配 Bitbucket Server 用户的邮件地址。如果未找到用户:
- 使用项目创建器取而代之。导入程序会在评论中添加一条注释以标记原始创建者。
- 对拉取请求审核者,未指派审核者。
- 对拉取请求批准者,未添加批准。
拉取请求描述和注释中的 @mentions
通过使用用户的电子邮件地址与 Bitbucket Server 上的用户资料相匹配。如果在极狐GitLab 上未发现具有相同邮件地址的用户,@mention
会变为静态的。为了让用户能够被匹配,他们必须具有一个极狐GitLab 角色,该角色至少能为该项目提供读取权限。
如果项目是公开的,极狐GitLab 只匹配那些被邀请到项目中的用户。
如果命名空间(群组)不存在,则导入器会创建任何新的命名空间(群组)。如果命名空间被占用,存储库会导入到启动导入流程的用户的命名空间下。
通过用户名进行用户指派
- 不推荐生产使用
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。