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

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

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

【问题讨论】:

标签: version-control bitbucket gitlab


【解决方案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

    1. 登录您的 bitbucket 帐户

    2. 进入 Bitbucket 设置

    3. 选择 OAuth(在左侧菜单中)
    4. 选择添加消费者
    5. 填写详细信息:

      • 姓名
      • 说明
      • 回调网址
      • 网址
    6. 授予权限

      • 帐户:电子邮件,阅读
      • 存储库:阅读
      • 拉取请求:读取
      • 问题:阅读
      • Wiki:读写
    7. 保存您的更改

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

    第 2 步: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。

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

    【讨论】:

      【解决方案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 代码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-06-28
            • 1970-01-01
            • 2021-08-27
            • 2020-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多