在Gitlab的实例之间迁移回购

由于我以前安装的Gitlab太难升级(TKL支持论坛主题: http ://www.turnkeylinux.org/forum/support/20120913/upgrading-gitlab),我下载了当前的TKL Gitlab发行版,遵循Gitlabs标准升级path,以便我现在有一个完全升级的Gitlab 6.1安装,运行TKLBAM和所有的好东西。 到现在为止还挺好。

但是,事实certificate,我们的老版本的gitlab没有提供HTTP URL来回购,所以这意味着我不能在Gitlab 6.1中使用“Import existing repository”function

我知道我可以简单地将旧的Git仓库从旧的VM复制到新的VM,但是我怎样才能让这些仓库在新VM上的Gitlab中可见?

一种选择是:

  1. 将旧的回购从gitlab克隆到开发机器上。
  2. 在新的gitlab上创建一个空白的回购。
  3. 在开发机器上添加新的回购作为一个远程。
  4. 把一切都推回新的回购。
  5. 从远程回购列表中删除旧的回购。

要创建一个名为newRepo的远程,请执行: git remote add newRepo gitlab.localhost.com:User/newRepo.git (将末尾的url替换为您的repo)

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

  • rsync裸回购从gitolite到repositories/{group}/ 。 确保使用gitolite repo的名称替换{repository} ,然后更改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所有裸机回到新的实例,然后导入。

在阅读ChrisA的回答之后,我几乎按照下面的方式做了这个事情,这让我对如何切实地做到了一点头痛。 这个例子将github的repo复制到gitlab中,使源和目标更清晰一些。

  1. 将github中的旧回购克隆到开发机器上(创建裸回购):

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

  3. 在开发机器上添加新的回购作为一个远程。

     $ cd myrepo.git $ git remote add newRepo git@gitlab.com:me/myrepo.git 
  4. 把一切都推回新的回购。

     $ git push --mirror newRepo 

而已。

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

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

如果您的Gitlab> = 8.9,那么您可以使用导出/导入来迁移回购。