从 Bitbucket Cloud 导入你的项目
- 层级:免费版、高级版、旗舰版
- 提供方式:GitLab.com、GitLab 自托管、GitLab 专用版
将你的项目从 Bitbucket Cloud 导入到 GitLab。
Bitbucket 导入器可以导入:
- 仓库描述
- Git 仓库数据
- 问题(包括评论)
- 拉取请求(包括评论)
- 里程碑
- Wiki
- 标签
- 里程碑
- LFS 对象
Bitbucket 导入器无法导入:
- 拉取请求审批
- 审批规则
导入时:
- 拉取请求和问题的引用会被保留。
- 仓库的公开访问权限会被保留。如果仓库在 Bitbucket 中是私有的,在 GitLab 中也会被创建为私有。
- 导入的问题、合并请求和评论在 GitLab 中会有一个 已导入 标识。
Bitbucket Cloud 导入器仅适用于 Bitbucket.org,不适用于 Bitbucket Server(也称为 Stash)。如果你尝试从 Bitbucket Server 导入项目,请使用 Bitbucket Server 导入器。
当导入问题、拉取请求和评论时,Bitbucket 导入器会使用作者/被指派者的 Bitbucket 昵称,并尝试在 GitLab 中找到相同的 Bitbucket 身份。如果不匹配或用户在 GitLab 数据库中未找到,则项目创建者(通常是启动导入流程的当前用户)将被设置为作者,但会保留关于原始 Bitbucket 作者的问题引用。
对于拉取请求:
- 如果源 SHA 在仓库中不存在,导入器会尝试将源提交设置为合并提交 SHA。
- 合并请求的被指派者设置为作者。审阅者设置为与 GitLab 中 Bitbucket 身份匹配的用户名。
- GitLab 中的合并请求可以是
opened、closed或merged。
对于问题:
- 会添加一个标签,对应于 Bitbucket 上的问题类型。可以是
bug、enhancement、proposal或task。 - 如果 Bitbucket 上的问题是
resolved、invalid、duplicate、wontfix或closed之一,则问题在 GitLab 中会被关闭。
导入器会创建任何新的命名空间(组),如果它们不存在,或者在命名空间已被占用的情况下,仓库会在启动导入流程的用户命名空间下导入。
前置条件
- 必须启用 Bitbucket Cloud 集成。如果未启用该集成,请询问你的 GitLab 管理员 启用它。Bitbucket Cloud 集成在 GitLab.com 上默认启用。
- 必须启用 Bitbucket Cloud 导入源。如果未启用,请询问你的 GitLab 管理员启用它。Bitbucket Cloud 导入源在 GitLab.com 上默认启用。
- 在目标组上至少需要 Maintainer 角色。
- Bitbucket 中的拉取请求必须具有相同的源和目标项目,并且不能来自项目的分支。 否则,拉取请求将作为空的合并请求导入。
用户映射贡献的要求
为了映射用户贡献,每个用户必须在项目导入前完成以下操作:
-
验证 Bitbucket 账户设置 中的用户名 是否与 Atlassian 账户设置 中的公开名称匹配。 如果不匹配,请修改 Atlassian 账户设置中的公开名称,使其与 Bitbucket 账户设置中的用户名匹配。
-
在 GitLab 配置文件服务登录 中连接你的 Bitbucket 账户。
导入你的 Bitbucket 仓库
-
登录 GitLab。
-
在左侧边栏顶部,选择 新建 ( ) 和 新建项目/仓库。
-
选择 导入项目。
-
选择 Bitbucket Cloud。
-
登录 Bitbucket,然后选择 授权访问 以授予 GitLab 访问你的 Bitbucket 账户的权限。
-
选择要导入的项目,或导入所有项目。 你可以按名称过滤项目,并选择每个项目导入到的命名空间。
-
导入项目:
- 首次导入:选择 导入。
- 再次导入:选择 重新导入。指定新名称并再次选择 重新导入。重新导入会创建源项目的新副本。
生成 Bitbucket Cloud 应用密码
如果你想使用 GitLab REST API 导入 Bitbucket Cloud 仓库,你必须创建一个 Bitbucket Cloud 应用密码。
生成 Bitbucket Cloud 应用密码:
-
在 访问管理 部分,选择 应用密码。
-
选择 创建应用密码。
-
输入密码名称。
-
选择至少以下权限:
账户:邮箱、读取 项目:读取 仓库:读取 拉取请求:读取 问题:读取 Wiki:读取和写入 -
选择 创建。
故障排除
如果你拥有多个 Bitbucket 账户
请确保登录到正确的账户。
如果你不小心用错误的账户启动了导入流程,请按照以下步骤操作:
-
撤销 GitLab 对你的 Bitbucket 账户的访问权限,基本上是逆转以下流程:导入你的 Bitbucket 仓库。
-
退出 Bitbucket 账户。遵循前一步链接的流程。
尽管名称匹配但用户映射失败
为了使用户映射工作, Bitbucket 账户设置中的用户名必须与 Atlassian 账户设置中的公开名称匹配。如果这些名称匹配但用户映射仍然失败,用户可能在连接其 Bitbucket 账户后修改了其 Bitbucket 用户名,在 GitLab 配置文件服务登录 中。
要解决此问题,用户必须验证其在 GitLab 数据库中的 Bitbucket 外部 UID 是否与其 当前的 Bitbucket 公开名称匹配,如果不匹配则重新连接:
-
在 API 响应中,
identities属性包含存在于 GitLab 数据库中的 Bitbucket 账户。如果extern_uid与当前 Bitbucket 公开名称不匹配,则 用户应在 GitLab 配置文件服务登录 中重新连接其 Bitbucket 账户。 -
重新连接后,用户应再次使用 API 验证其在 GitLab 数据库中的
extern_uid现在是否与其当前的 Bitbucket 公开名称匹配。
然后,导入器必须 删除已导入的项目 并再次导入。