Import bare repositories

Import bare repositories

Rake 任务可用于将裸仓库导入 GitLab 实例.

注意:

  • 项目的所有者将是第一位管理员.
  • 将根据需要创建组,包括子组.
  • 组的所有者将是第一位管理员.
  • 现有项目将被跳过.
  • 现有的 Git 存储库将从磁盘中移出(从原始路径中移出).

要将裸仓库导入 GitLab 实例:

  1. 创建一个新文件夹以从中导入您的 Git 存储库. 新文件夹需要具有 Git 用户所有权,并且需要对 Git 用户及其组具有读/写/执行访问权限:

  2. 将裸存储库复制到此新创建的文件夹中. 注意:

    • 在任何子文件夹中找到的所有存储库都将作为项目导入.
    • 将根据需要创建组,这些组可以是嵌套文件夹.

    例如,如果我们将存储库复制到/var/opt/gitlab/git-data/repository-import-<date> ,并且存储库A必须位于组G1G2 ,则必须在以下文件夹下创建它: /var/opt/gitlab/git-data/repository-import-<date>/G1/G2/A.git .

    1. sudo cp -r /old/git/foo.git /var/opt/gitlab/git-data/repository-import-<date>/new_group/
    2. # Do this once when you are done copying git repositories
    3. sudo chown -R git:git /var/opt/gitlab/git-data/repository-import-<date>

    如果您使用源安装,请用/home/git替换 .

  3. 根据您的安装类型运行以下命令:

    • 全部安装
    • 从源安装. 在运行此命令之前,您需要切换到 GitLab 安装所在的目录:
    1. cd /home/git/gitlab

Importing bare repositories from hashed storage

旧版存储中的项目具有目录结构,该目录结构反映了 GitLab 中完整的项目路径,包括名称空间结构. 裸存储库导入程序将利用此信息将项目导入到正确的位置. 每个项目及其父名称空间均有意义地命名.

但是,哈希存储中项目的目录结构不包含此信息. 由于多种原因,这是有益的,尤其是改善的性能和数据完整性. 有关更多详细信息,请参见存储库存储类型 .

可导入的存储库取决于 GitLab 的版本.

不支持从哈希存储导入裸存储库.

GitLab 10.4 and later

  1. [gitlab]
  2. fullpath = gitlab-org/gitlab

但是,现有存储库并未迁移为包括此路径.

如果 GitLab 10.4 和更高版本中的存储库发生以下事件,则裸存储库是可导入的:

  • Created
  • 迁移到哈希存储
  • Renamed
  • 转移到另一个名称空间
  • 祖先更名
  • 祖先转移到另一个名称空间

如果仓库满足以下所有条件,则裸仓库无法通过 GitLab 10.4 导入到 GitLab 11.6:

  • 它是在 GitLab 10.3 或更早版本中创建的.
  • 它没有重命名,传输或迁移到 GitLab 10.4 的哈希存储中,也没有迁移到 GitLab 11.6.
  • 它的祖先名称空间未在 GitLab 10.4 中重命名或传输到 GitLab 11.6.

,所有裸仓库都可以导入.

要自己手动迁移存储库(对于从 GitLab 10.4 到 GitLab 11.6 的迁移),可以使用Rails 控制台进行. 在 Rails 控制台会话中,运行以下命令来迁移项目:

在 Rails 控制台会话中,运行以下命令以迁移名称空间的所有项目(如果名称空间中有数千个项目,则可能需要一段时间):

  1. namespace = Namespace.find_by_full_path('gitlab-org')
  2. namespace.send(:write_projects_repository_config)