从 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 stop
、gitlab-ctl reconfigure
和gitlab-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 迁移