最近在学习 GitLab,将学习成果做个简要总结,以供大家参考。如有错误,欢迎留言纠正!你的「点赞」或「打赏」将是对我最大的支持和鼓励!
本次系列文章包括:
用户可以自行选择默认语言,在「用户 > 设置 > 偏好 > 语言」里设置。
是否允许用户自己申请注册新账号,在「管理员 > 管理中心 > 设置 > 通用 > 注册限制 > Sign-up enabled」里设置。
在创建用户时,可以通过「Access > Projects limit」限制用户可创建的项目个数,0为禁止创建项目。如果你不想让用户有新建项目的权限(哪怕私有项目也不行),那这个配置就能起到作用。
默认值可以通过「管理员 > 管理中心 > 设置 > 通用 > 帐户和限制 > Default projects limit」修改,如上图所示。注意,用户需要重新登录才能让看到新的配置生效。
限制的项目数包括私有、内部、公开三种类型的项目数量的总和。比如限制项目数为3,代表能且仅能创建3个任意类型(私有、内部、公开)的项目。
注意,这里的限制,是指当用户所拥有的项目数量(包括自己创建的项目和加入别人创建的项目)超过限制,则用户不能再新建项目,但依然可以加入别人的项目。
创建项目时,默认是创建在个人用户名空间之下,从代码仓库的URL来看,就像是仓库隶属于某个用户。对于公司公共的项目,这样不太好。可以在GitLab群组之下创建项目来解决这个问题。群组可以在同一命名空间下存放几个依赖项目。
代码仓库代码是否要在web上显示出来,哪些用户可见,哪些用户不可见,是可以配置的,见:「项目 > 设置 > 通用 > 可见性,项目功能,权限 > 仓库」。
在GitLab中允许有两种仓库访问协议:SSH和HTTP(S),可以有选择性的只启用其中一种,或者两种都启用。管理员可以在 「管理中心 > 设置 > 通用 > 可见性与访问控制 > 启用 Git 访问协议」中配置。
如果要强制大家使用SSH协议,可以在这里配置。
每个用户都可以派生,会导致服务器空间难于控制,有以下两种方式可以禁用派生:
方式一,派生的项目,就相当自己的项目了,会占用个人仓库数量名额。个人仓库数量达限制上限时,就无法使用派生功能,派生会失败。个人仓库数量设置为0,就无法使用派生功能。
方式二,在「项目 > 设置 > 通用 > 可见性,项目功能,权限 > 仓库」中禁用派生权限。没法所有项目统一禁用,只能每个项目单独禁用。
从 GitLab 13.0 版本起,哈希仓库存储路径(Hashed repository storage paths)已经是默认的仓库存储方式。这种方式的存储路径很难跟项目名称建立直观的联系,如果要查看某个项目对应的哈希仓库存储路径,可以到 Admin Area > Overview > Projects 打开项目,其中 Gitaly relative path 值就是,如下所示:
Gitaly relative path:
@hashed/4e/07/4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce.git
更多信息,见官网:https://docs.gitlab.com/ce/administration/repository_storage_types.html
GitLab通过rpm包安装后,默认存储位置在「/var/opt/gitlab/git-data/repositories」,但仓库名采用的是 Hashed repository storage paths 方式,并不直观(我用的版本是 GitLab Community Edition 13.2.0)。
GitLab默认仓库路径有可能存在隐患,比如跟操作系统在同一分区,系统重装后数据会丢失。通常需要更改此路径到单独的一个分区来存储仓库的数据。
可按以下步骤修改存储位置:
1.新建新仓库目录
mkdir -p /path/gitlab/git-data
2.修改配置文件
vi /etc/gitlab/gitlab.rb
搜索 git_data_dir 关键词,修改成新目录。
3.停止gitlab,重新加载配置
gitlab-ctl stop
gitlab-ctl reconfigure
重新加载后,会发现在新目录下自动创建一个repositories目录。
4.数据迁移
如果原来目录已经存在Git仓库数据,你需要使用以下命令把数据迁移到新的位置。如果原来目录没有Gti仓库,可以跳过此步骤。
rsync -av /var/opt/gitlab/git-data/repositories/ /path/gitlab/git-data/repositories/
5.启动gitlab
gitlab-ctl start
非项目成员,可以申请加入项目(项目管理员审批),也可以退出项目。
注意:只有看得到的项目(内部项目或者公开项目),才可以在web上操作申请加入。对于私有项目,由于非项目成员看不到,也就无法申请加入。
GitLab可以在web上直接修改代码并提交,这个功能也叫做 Web IDE,是为了解决非程序员在编辑文件和提交变更上非常困难而发明的。
通过 Web IDE 直接修改提交,跟 git push 一样,也会经过 server hook 验证(比如pre-receive脚本)。
目前来看,好像无法禁用Web IDE提交代码。
GitLab 自带有问题管理系统,但其issue状态比较简单,问题状态只有两个:Open和Close,还无法自定义扩展。