7

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

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

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

4

5 回答 5

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
    

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

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

在您的情况下,您可以登录旧的 TKL 系统并将所有裸存储库同步到新实例,然后导入。

于 2013-10-05T02:29:23.023 回答
7

一种选择是:

  1. 将旧仓库从 gitlab 克隆到开发机器上。
  2. 在新的 gitlab 上创建一个空白仓库。
  3. 在开发机器上添加新的 repo 作为远程。
  4. 将所有内容推回新的仓库。
  5. 从远程仓库列表中删除旧仓库。

要创建一个名为 newRepo 的遥控器,请执行以下操作:(git remote add newRepo gitlab.localhost.com:User/newRepo.git将末尾的 url 替换为您的 repo 的 URL)

于 2013-10-01T07:48:40.340 回答
5

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

  1. 将旧仓库从 github 克隆到开发机器上(创建一个裸仓库):

    $ 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
    

而已。

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

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

于 2014-05-28T16:10:11.820 回答
0

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

于 2017-06-07T08:26:09.477 回答
0

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

直接在实例之间迁移组

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

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

请参阅文档史诗

于 2021-01-23T02:05:26.520 回答