从 bitbucket 迁移到 GitLab

Posted

技术标签:

【中文标题】从 bitbucket 迁移到 GitLab【英文标题】:Migrate from bitbucket to GitLab 【发布时间】:2016-08-08 04:29:41 【问题描述】:

我在 BitBucket 中有多个存储库。从 BitBucket 迁移到 GitLab 最合适的方式是什么?

例如,我在我的系统上维护了一个名为“SSSP”的存储库。将该存储库从 BitBucket 干净迁移到 GitLab 的步骤应该是什么?

【问题讨论】:

还有:about.gitlab.com/2018/08/22/gitlab-11-2-released/… 【参考方案1】:

我想通过 Web 界面使用导入功能会比克隆和推送每个 repo 更简单。

GitLab Documentation - Import your project from Bitbucket to GitLab

此外,Gitlab 可以在这种情况下导入问题。

【讨论】:

【参考方案2】:

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

假设你有一个空的 gitlab repo 准备好了:

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

请注意,这不包括 wiki(which you need to clone as well,如果您有一些内容)或问题。

【讨论】:

Gitlab 不是 github。但我想这个过程是一样的。 @Ste 是的,同样的想法。我已经相应地修改了答案。 请注意。为了使它对我有用,我需要使用-- bar(所以双-)。也许 SO 把你变了两倍——变成了一个长的—— @Yeronimo 好点,谢谢。我已经相应地编辑了答案。【参考方案3】:

我今天遇到了这个问题,并且上述答案中的链接已过期(404 Not Found)。最后我解决了它,这是我制作它的步骤,希望它对需要它的人有所帮助

第 1 步:Bitbucket

    登录您的 bitbucket 帐户

    进入 Bitbucket 设置

    选择 OAuth(在左侧菜单中) 选择添加消费者

    填写详细信息:

    姓名 说明 回调网址 网址

    授予权限

    帐户:电子邮件,阅读 存储库:阅读 拉取请求:读取 问题:阅读 Wiki:读写

    保存您的更改

现在密钥和秘密生成如下:

第 2 步:GitLab

    使用 vim 以 root 身份打开 gitlab.rb 文件(你可以选择你喜欢的编辑器)

    sudo vim /et/gitlab/gitlab.rb

    初始化 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

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

    将更改保存到 gitlab.rb 文件

    运行命令gitlab-ctl stopgitlab-ctl reconfiguregitlab-ctl start重新配置更改并重启gitlab。

现在您可以看到这个确认模式:

【讨论】:

【参考方案4】:

我没有 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 上。

【讨论】:

【参考方案5】:

如果你使用 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 项目设置 -> 高级并重命名您的存储库。

亲切的问候。

【讨论】:

【参考方案6】:
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 代码。

【讨论】:

以上是关于从 bitbucket 迁移到 GitLab的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中的 Github Oauth 令牌 - 从 BitBucket 迁移

Yarn 包管理器:从私有 Bitbucket 存储库安装依赖项

如何将 cvs2git 迁移的结果导入 bitbucket

bitbucket灾难恢复或者服务迁移指南

如何将旧提交从旧存储库移动到新存储库

将特定的 SVN 分支迁移到 GIT(2018 年迁移的主干)