在Gitlab实例之间迁移回购

时间:2013-10-01 07:31:35

标签: linux git migration repository gitlab

由于我的旧安装Gitlab太难升级(Thread on TKL支持论坛:http://www.turnkeylinux.org/forum/support/20120913/upgrading-gitlab),我已下载当前的TKL Gitlab发行版,并遵循Gitlabs标准升级路径,以便我现在拥有使用TKLBAM运行完全升级的Gitlab 6.1安装以及所有好东西。到目前为止一切都很好。

但是,事实证明我们旧版本的gitlab没有给回复的HTTP网址,所以这意味着我不能在Gitlab 6.1中使用“导入现有存储库”功能

我知道我可以简单地将旧的Git存储库从旧VM复制到新VM,但是如何在新VM上的Gitlab中显示这些存储库?

5 个答案:

答案 0 :(得分:13)

我最近从gitolite迁移到gitlab,官方rake任务gitlab:import:repos为我工作。我正在使用gitlab 6.1.0(82f3446)。这是我做的:

  • rsync裸露的回购从gitolite到repositories/{group}/。确保将{repository}替换为gitolite repo的名称,并更改gitlab服务器的主机名。

    rsync -rth --progress repositories/{repository}.git \
    git@gitlab-server:/home/git/repositories/{group}/
    

    此处,{group}是您希望将存储库添加到的用户组的名称。如果您没有任何特定组,请选择root作为组名。

  • 修复权限 - 仅在rsync用户不是git时才需要:

    sudo chown -R git:git repositories/{group}/
    
  • cd ~/gitlab

  • 运行rake任务以导入所有新存储库:

    bundle exec rake gitlab:import:repos RAILS_ENV=production
    

现在,如果您以管理员身份登录,您会发现新项目已添加。

有关更多信息,请参阅http://{your-gitlab-server}/help/raketasks下的“将裸存储库导入GitLab项目实例”。

在您的情况下,您可以登录到旧的TKL系统并rsync所有裸回购到新实例,然后导入。

答案 1 :(得分:7)

一种选择是:

  1. 将旧的repo从gitlab克隆到开发机器上。
  2. 在新gitlab上创建一个空白仓库。
  3. 在开发计算机上添加新的repo作为远程。
  4. 将所有内容推回新的仓库。
  5. 从远程存储库列表中删除旧存储库。
  6. 要创建一个名为newRepo的远程,请执行:git remote add newRepo gitlab.localhost.com:User/newRepo.git(将末尾的url替换为repo的url)

答案 2 :(得分:5)

在阅读了ChrisA的答案之后,我几乎按照以下方式做了这件事,这让我对如何实际操作感到有点头疼。该示例将一个repo从github复制到gitlab,使源和目标更加清晰。

  1. 将旧的repo从github克隆到dev机器上(创建一个裸机器):

    $ git clone --mirror git@github.com:me/myrepo.git
    
  2. 在新gitlab上创建一个空白回购。

  3. 在开发计算机上添加新的repo作为远程。

    $ cd myrepo.git
    $ git remote add newRepo git@gitlab.com:me/myrepo.git
    
  4. 将所有内容推回新的仓库。

    $ git push --mirror newRepo
    
  5. 那就是它。

    这样它就会将所有分支和标签复制到新目的地。

    您现在可以从开发机器中删除克隆的裸仓库。

答案 3 :(得分:0)

如果你的Gitlab是> = 8.9,那么你可以使用export/import来迁移回购。

答案 4 :(得分:0)

GitLab 13.8(2021 年 1 月)以来,您现在拥有:

<块引用>

直接在实例之间迁移组

一种更快、更简单的方式来迁移您的 GitLab 组。
组迁移是一项新功能,可让您将 GitLab 组从一个实例直接复制到另一个实例,而无需导出和导入任何文件

在此版本中,我们仅迁移具有基本字段的 Group 对象。
我们计划跟进越来越多的字段和相关对象,直到以这种易于使用的方式迁移 Group 中的所有相关数据。

参见 DocumentationEpic

相关问题