git存储库导入gitlab

注意:

设置该项目的权限所有者为(第一个管理员),创建组包括子组

 

1.创建一个新的文件夹把git存储库导入

新文件夹需要具有git用户所有权以及git用户及其组的读/写/执行访问权限:

sudo -u git mkdir /var/opt/gitlab/git-data/repositories/new_group

2.复制存储库到文件夹

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

例:如果我们将repos复制到/var/opt/gitlab/git-data/repositories,并且repo A需要在G1和G2组之下,则必须在这些文件夹下创建:/var/opt/gitlab/git-data/repositories/G1/G2/A.git

sudo cp -r /old/git/foo.git /var/opt/gitlab/git-data/repositories/new_group

sudo chown -R git:git /var/opt/gitlab/git-data/repositories

foo.git 需要由git用户和git用户组拥有。
如果您从源代码使用安装,请替换/var/opt/gitlab/为/home/git

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

Omnibus安装

sudo gitlab-rake gitlab:import:repos['/var/opt/gitlab/git-data/repositories']

源代码安装

在运行此命令之前,您需要将目录更改为GitLab安装所在的目录:

cd /home/git/gitlab

 sudo -u git -H bundle exec rake gitlab:import:repos['/var/opt/gitlab/git-data/repositories'] RAILS_ENV=production

实例输出:

Processing /var/opt/gitlab/git-data/repository-import-1/a/b/c/blah.git
 * Using namespace: a/b/c
 * Created blah (a/b/c/blah)
 * Skipping repo  /var/opt/gitlab/git-data/repository-import-1/a/b/c/blah.wiki.git
Processing /var/opt/gitlab/git-data/repository-import-1/abcd.git
 * Created abcd (abcd.git)
Processing /var/opt/gitlab/git-data/repository-import-1/group/xyz.git
 * Using namespace: group (2)
 * Created xyz (group/xyz.git)
 * Skipping repo /var/opt/gitlab/git-data/repository-import-1/@shared/a/b/abcd.git
[...]

从散列存储库导入裸存储库

背景
旧存储中的项目具有一个目录结构,该结构反映了GitLab中的完整项目路径,包括其命名空间结构。裸存储库导入程序利用此信息将项目导入其适当的位置。每个项目及其父命名空间都有名称。
但是,散列存储中的项目的目录结构不包含此信息。这有利于各种原因,尤其是改进的性能和数据完整性。有关详细信息,请参阅
 存储库存储类型。

哪些存储库是可导入的?

GitLab 10.3或更早版本
不支持从散列存储导入裸存储库。

GitLab 10.4及更高版本
为了支持从散列存储导入裸存储库,GitLab 10.4及更高版本将每个存储库的完整项目路径存储在git存储库配置文件的特殊部分中。本节格式如下:
[gitlab]
    fullpath = gitlab-org/gitlab-ce
但是,现有存储库未迁移以包含此路径。
如果GitLab 10.4及更高版本中的存储库发生以下事件,则可以导入裸存储库:

创建
迁移到散列存储
改名
转移到另一个名称空间
祖先改名
祖先转移到另一个命名空间

GitLab 10.4及更高版本无法导入裸存储库时,以下所有内容都适用于存储库:

它是在GitLab 10.3或更早版本中创建的。
它未在GitLab 10.4及更高版本中重命名,传输或迁移到散列存储。
它的祖先命名空间未在GitLab 10.4及更高版本中重命名或传输。

有一个未解决的问题是添加迁移以使所有裸存储库都可导入。
在此之前,您可能希望自己手动迁移存储库。您可以使用
 Rails控制台 
执行此操作。在Rails控制台会话中,运行以下命令以迁移项目:

project = Project.find_by_full_path('gitlab-org/gitlab-ce')

project.write_repository_config

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

namespace = Namespace.find_by_full_path('gitlab-org')

namespace.send(:write_projects_repository_config)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值