Import bare repositories
Import bare repositories
Rake 任务可用于将裸仓库导入 GitLab 实例.
注意:
- 项目的所有者将是第一位管理员.
- 将根据需要创建组,包括子组.
- 组的所有者将是第一位管理员.
- 现有项目将被跳过.
- 现有的 Git 存储库将从磁盘中移出(从原始路径中移出).
要将裸仓库导入 GitLab 实例:
创建一个新文件夹以从中导入您的 Git 存储库. 新文件夹需要具有 Git 用户所有权,并且需要对 Git 用户及其组具有读/写/执行访问权限:
将裸存储库复制到此新创建的文件夹中. 注意:
- 在任何子文件夹中找到的所有存储库都将作为项目导入.
- 将根据需要创建组,这些组可以是嵌套文件夹.
例如,如果我们将存储库复制到
/var/opt/gitlab/git-data/repository-import-<date>
,并且存储库A
必须位于组G1
和G2
,则必须在以下文件夹下创建它:/var/opt/gitlab/git-data/repository-import-<date>/G1/G2/A.git
.sudo cp -r /old/git/foo.git /var/opt/gitlab/git-data/repository-import-<date>/new_group/
# Do this once when you are done copying git repositories
sudo chown -R git:git /var/opt/gitlab/git-data/repository-import-<date>
如果您使用源安装,请用
/home/git
替换 .根据您的安装类型运行以下命令:
- 全部安装
- 从源安装. 在运行此命令之前,您需要切换到 GitLab 安装所在的目录:
cd /home/git/gitlab
Importing bare repositories from hashed storage
旧版存储中的项目具有目录结构,该目录结构反映了 GitLab 中完整的项目路径,包括名称空间结构. 裸存储库导入程序将利用此信息将项目导入到正确的位置. 每个项目及其父名称空间均有意义地命名.
但是,哈希存储中项目的目录结构不包含此信息. 由于多种原因,这是有益的,尤其是改善的性能和数据完整性. 有关更多详细信息,请参见存储库存储类型 .
可导入的存储库取决于 GitLab 的版本.
不支持从哈希存储导入裸存储库.
GitLab 10.4 and later
[gitlab]
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 控制台会话中,运行以下命令以迁移名称空间的所有项目(如果名称空间中有数千个项目,则可能需要一段时间):
namespace = Namespace.find_by_full_path('gitlab-org')
namespace.send(:write_projects_repository_config)