从Bitbucket迁移到GitLab

15

我在BitBucket上有多个代码库。从BitBucket迁移到GitLab最合适的方式是什么?

举例来说,我在我的系统上维护了一个名为“SSSP”的代码库。我应该采取哪些步骤,以便将该代码库从BitBucket干净地迁移到GitLab?


另外:https://about.gitlab.com/2018/08/22/gitlab-11-2-released/#importer-for-bitbucket-server - VonC
6个回答

15

最好使用一个中间的本地bare repo来复制一个远程仓库并将其推送到一个新的远程仓库。

假设您已经准备好一个空的GitLab仓库:

git clone --bare git@bitbucket.com:old/old_repo.git
cd old_repo
git remote add new-origin git@gitlab.com:new/new_repo.git
git push --mirror new-origin
cd ..
git clone git@gitlab.com:new/new_repo.git repo
cd repo
# start working

请注意,这不包括维基(如果您在那里有一些内容,您也需要克隆)或问题。

请注意,有一个更完整的导入过程,并且在GitLab 16.3(2023年8月)中包括以下内容:

从BitBucket Server导入时保留拉取请求审阅者

直到现在,BitBucket Server导入程序没有导入拉取请求(PR)的审阅者,而是将它们归类为参与者。审阅者的信息在审计和合规方面非常重要。

在GitLab 16.3中,我们增加了正确导入来自BitBucket的PR审阅者的支持。在GitLab中,他们成为合并请求的审阅者。

请参阅文档问题


Gitlab不是Github,但我想流程应该是相同的。 - Stephen C
@Ste 是的,同样的想法。我已经相应地修改了答案。 - VonC
提醒一下。为了让它对我起作用,我需要使用 - - bar(所以是双 -)。也许 SO 把你的双 -- 变成了一个长 -。 - Yeronimo
@Yeronimo 很好的观点,谢谢。我已经相应地编辑了答案。 - VonC

10

6
今天我遇到了这个问题,上面的答案中的链接已经过时(404 Not Found)。最终我解决了它,以下是我解决的步骤,希望对需要帮助的人有所帮助。
第一步:Bitbucket
  1. 登录您的Bitbucket账户
  2. 进入Bitbucket设置
  3. 选择OAuth(在左侧菜单中)
  4. 选择添加使用者
  5. 填写详细信息:
    • 名称
    • 描述
    • 回调URL
    • URL
  6. 授予权限
    • 账户:电子邮件、读取
    • 仓库:读取
    • 拉请求:读取
    • 问题:读取
    • Wiki:读取和写入
  7. 保存更改
现在密钥和密码已生成,如下所示: enter image description here 第二步:GitLab
  1. 使用vim以root身份打开gitlab.rb文件(您可以选择您喜欢的编辑器)

    sudo vim /et/gitlab/gitlab.rb

  2. 初始化OmniAuth配置以进行初始设置: gitlab_rails['omniauth_enabled'] = true gitlab_rails['omniauth_allow_single_sign_on'] = ['saml', 'twitter'] gitlab_rails['omniauth_auto_link_ldap_user'] = true gitlab_rails['omniauth_block_auto_created_users'] = true

  3. 添加Bitbucket提供者配置(我们生成的密钥和秘密): gitlab_rails['omniauth_providers'] = [ { "name" => "bitbucket", "app_id" => "BITBUCKET_APP_KEY", "app_secret" => "BITBUCKET_APP_SECRET", "url" => "https://bitbucket.org/" } ]

  4. 保存更改到gitlab.rb文件中

  5. 运行命令gitlab-ctl stopgitlab-ctl reconfiguregitlab-ctl start以重新配置更改并重新启动gitlab。
现在您可以看到这个确认模态框: 在此输入图像描述

如果我没有“选择OAuth(在左侧菜单中)”部分选项,只有https://bitbucket.org/account/settings/app-passwords/几乎相同但没有“回调URL”的密码?那我是否拥有不同或另一个版本的Bitbucket? - Vladimir Ch
仅限高级账户! - Vladimir Ch

1

我没有50个声望,所以无法发表评论,但VonC是正确的。花了大约两个小时尝试让GitLab的BitBucket导入功能工作 - 我放弃了它,只是添加了一个新的起点,重新推送--mirror并删除了旧的起点。当查看新的GitLab服务器时,我可以看到来自先前Git起点/服务器的所有提交。

cd /dev-git-repo/
git remote add new-origin https://my-gitlab.my-gitlab-repo.com/myrepo-dev-git-repo
git push --mirror new-origin
git remote remove origin

然后您可以测试...
echo "\r\nThis should be seen on GitLab not bitBucket" > README.md
git commit -m "updated readme.md"
git push new-origin

而且你可以看到README在gitlab上更新了,而不是在bitbucket上。


1
如果您使用bitbucket-server和gitlab-ce,请按照以下步骤操作。
首先,打开gitlab-ce管理员界面,创建一个名为bitbucket-import的新组。然后在该组中创建一个新项目,以便创建文件夹/var/opt/gitlab/data/repositories/bitbucket-import
接下来,将裸仓库从bitbucket-server数据文件夹复制到gitlab-ce数据文件夹中:
cp -r /var/atlassian/application-data/stash/shared/data/repositories/* /var/opt/gitlab/data/repositories/bitbucket-import

将所有文件夹从 {folder} 重命名为 {folder}.git。Gitlab-ce需要以 .git 结尾才能导入存储库。
/var/opt/gitlab/data/repositories/bitbucket-import/
rename -n s/$/.git/ * # Dry run
rename s/$/.git/ * # Renaming

导入存储库:

chown -R git:git /var/opt/gitlab/data/repositories/bitbucket-import/
gitlab-rake gitlab:import:repos['/var/opt/gitlab/data/repositories/'] RAILS_ENV=production

现在,您可以在GitLab管理界面中看到通过Bitbucket ID表示的导入的Git存储库。以下是您查找真实名称的方法:
http://your-bitbucket-stash-server/rest/api/1.0/repos?limit=1000&start=0

前往gitlab-ce项目设置 -> 高级选项并重新命名您的存储库。

祝好。


0
1.git -c http.sslVerify=false clone https://user@bitbkt:8443/scm/config.git

将从Bitbucket在本地机器上创建克隆(需要适当的权限来克隆Bitbucket中的数据)

 2.cd  config

克隆后进入基础文件夹

 3.git remote add sxm https://test.com/gitlab/xyz/config.git

在GitLab(xyz)上创建了特定的组,并在其中创建了配置项目。

4. git push sxm

将在GL Gitlab上推送BitBucket代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接