文章目录

  • 1 前言
  • 2 GitLab常用设置
  • 2.1 语言
  • 2.2 是否允许自注册
  • 2.3 限制用户项目数量
  • 2.3 仓库路径是否只隶属于某个用户
  • 2.5 代码仓库可见性
  • 2.6 仓库访问协议
  • 2.7 禁用派生
  • 2.8 哈希仓库存储路径
  • 2.9 修改仓库路径(仓库路径是否安全)
  • 2.10 申请加入/退出项目
  • 2.11 能否禁用Web IDE直接修改并提交
  • 2.12 自带的issue状态能否自定义


1 前言

最近在学习 GitLab,将学习成果做个简要总结,以供大家参考。如有错误,欢迎留言纠正!你的「点赞」或「打赏」将是对我最大的支持和鼓励!

本次系列文章包括:

2 GitLab常用设置

2.1 语言

用户可以自行选择默认语言,在「用户 > 设置 > 偏好 > 语言」里设置。

2.2 是否允许自注册

是否允许用户自己申请注册新账号,在「管理员 > 管理中心 > 设置 > 通用 > 注册限制 > Sign-up enabled」里设置。

2.3 限制用户项目数量

在创建用户时,可以通过「Access > Projects limit」限制用户可创建的项目个数,0为禁止创建项目。如果你不想让用户有新建项目的权限(哪怕私有项目也不行),那这个配置就能起到作用。

默认值可以通过「管理员 > 管理中心 > 设置 > 通用 > 帐户和限制 > Default projects limit」修改,如上图所示。注意,用户需要重新登录才能让看到新的配置生效。

限制的项目数包括私有、内部、公开三种类型的项目数量的总和。比如限制项目数为3,代表能且仅能创建3个任意类型(私有、内部、公开)的项目。

注意,这里的限制,是指当用户所拥有的项目数量(包括自己创建的项目和加入别人创建的项目)超过限制,则用户不能再新建项目,但依然可以加入别人的项目。

2.3 仓库路径是否只隶属于某个用户

创建项目时,默认是创建在个人用户名空间之下,从代码仓库的URL来看,就像是仓库隶属于某个用户。对于公司公共的项目,这样不太好。可以在GitLab群组之下创建项目来解决这个问题。群组可以在同一命名空间下存放几个依赖项目。

2.5 代码仓库可见性

代码仓库代码是否要在web上显示出来,哪些用户可见,哪些用户不可见,是可以配置的,见:「项目 > 设置 > 通用 > 可见性,项目功能,权限 > 仓库」。

2.6 仓库访问协议

在GitLab中允许有两种仓库访问协议:SSH和HTTP(S),可以有选择性的只启用其中一种,或者两种都启用。管理员可以在 「管理中心 > 设置 > 通用 > 可见性与访问控制 > 启用 Git 访问协议」中配置。

如果要强制大家使用SSH协议,可以在这里配置。

2.7 禁用派生

每个用户都可以派生,会导致服务器空间难于控制,有以下两种方式可以禁用派生:

方式一,派生的项目,就相当自己的项目了,会占用个人仓库数量名额。个人仓库数量达限制上限时,就无法使用派生功能,派生会失败。个人仓库数量设置为0,就无法使用派生功能。

方式二,在「项目 > 设置 > 通用 > 可见性,项目功能,权限 > 仓库」中禁用派生权限。没法所有项目统一禁用,只能每个项目单独禁用。

2.8 哈希仓库存储路径

从 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

2.9 修改仓库路径(仓库路径是否安全)

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

2.10 申请加入/退出项目

非项目成员,可以申请加入项目(项目管理员审批),也可以退出项目。

注意:只有看得到的项目(内部项目或者公开项目),才可以在web上操作申请加入。对于私有项目,由于非项目成员看不到,也就无法申请加入。

2.11 能否禁用Web IDE直接修改并提交

GitLab可以在web上直接修改代码并提交,这个功能也叫做 Web IDE,是为了解决非程序员在编辑文件和提交变更上非常困难而发明的。

通过 Web IDE 直接修改提交,跟 git push 一样,也会经过 server hook 验证(比如pre-receive脚本)。

目前来看,好像无法禁用Web IDE提交代码。

2.12 自带的issue状态能否自定义

GitLab 自带有问题管理系统,但其issue状态比较简单,问题状态只有两个:Open和Close,还无法自定义扩展。