更新时间:2024-07-05 GMT+08:00

提交规则

“提交规则”位于仓库详情中的 设置 > 策略设置 > 提交规则

“提交规则”可以为代码的提交建立一系列的校验、限制规则,以确保代码质量,此设置只针对被设置的仓库生效。

仓库内的仓库成员可以查看该页面,仓库成员是否具有仓库设置权限,请参考权限管理页面。

表1 “提交规则”说明

字段

说明

拒绝未Signed-off-by签名的提交

配置只允许Signed-off-by签名的提交才能推送到该仓库。

代码托管服务签名方式:

在代码托管服务中进行在线commit时,编写提交信息需采用以下格式:

commit message             #此处填写自定义提交信息。
                           #此处为空行。
Signed-off-by:自定义签名   #此处在“Signed-off-by:”后面填写自定义签名。

Git客户端签名方式:

在Git客户端进行commit时,需增加 -s参数。

git commit -s -m “您的提交备注”

注意需要提前在客户端配置好签名和邮箱

拒绝未GPG签名的提交

配置只允许GPG签名的提交才能推送到该仓库。

配置GPG密钥:

git config --global user.signingkey “您的GPG私钥

Git客户端签名方式:

在Git客户端进行commit时,需增加-S参数。

git commit -S -m “您的提交备注

在Git客户端进行tag时,需增加-s参数。

git tag -s -m “您的标签备注

注意需要提前在客户端配置好签名和邮箱

不允许删除Tags

勾选后,禁止通过页面以及客户端命令的方式删除Tags。

阻止包含涉密文件的提交

涉密文件包括id_rsa和id_dsa等文件,详情参见包含涉密文件的说明

拒绝使用git push -f命令提交代码

配置是否不允许在客户端使用git push -f命令提交代码。

git push -f表示将目前自己本机的代码库推送到代码托管并覆盖。

一般情况下建议禁止使用。

新建提交规则

仓库管理员和仓库所有者可针对仓库某一分支新建提交规则,每个分支只能设置一条提交规则。

提交规则的优先匹配机制:

1、目标分支优先匹配已配置的提交规则;

2、准确匹配不到时,以模糊匹配到的第一条规则为准;

3、模糊匹配不到后以default规则为准。

表2 字段说明

字段

说明

规则名称

必填,新建提交规则的名称,限制200个字符。

分支规则

必填,下拉选择分支或者创建一个正则表达式,限制500个字符。

提交规则

非必填。

  • 提交信息:提交信息默认为空,不会对提交信息校验,任何提交信息都可以提交,限制500个字符。

    例如:设置Commit message的格式规则:

    TraceNo:(REQ[0-9]{1,9})(.|\n|.\n)Author:.*(.|\n|.\n)Description:.*

    设置符合规范Commit message:

    TraceNo:REQ1234567 Author:**** Description:testpushfile

    设置不符合规范Commit message:

    new files
  • commit提交信息负面匹配规则:提交信息负面匹配规则默认为空,不会对提交信息校验,任何提交信息都可以提交,限制500个字符。

    例如:设置Commit message的格式规则:

    TraceNo:(REQ[0-9]{1,9})(.|\n|.\n)Author:.*(.|\n|.\n)Description:.*
  • 提交人:提交人默认为空,不会对提交人校验,任何人都可以提交,限制200个字符。

    提交人可通过“git config -l”查看user.name的值,并通过“git config --global user.name”设置user.name的值。

    例如:

    设置提交人规则:([a-z][A-Z]{3})([0-9]{1,9})
  • 提交人邮箱地址:提交人邮箱地址默认为空,不会对提交人邮箱地址校验,任何邮箱地址都可以提交,限制200个字符。

    提交人可通过“git config -l”查看user.email的值,并通过“git config --global user.email”设置邮箱。

    例如:

    设置提交人邮箱规则:@huawei.com$

文件基本属性规则

非必填。

  • 禁止提交的文件名称:禁止提交的文件名称规则默认为空,不会对文件名校验,任何文件都可以提交,建议正则编写时使用规范的正则语句进行匹配,文件名禁用规则处默认会根据规则校验文件所属路径,限制2000个字符。

    例如:

    设置禁止提交的文件名称规则:(\.jar|\.exe)$
  • 单文件大小限制(MB):文件大小上限默认显示为50,表示添加或更新文件大小超过50MB,推送将被拒绝。管理员可以在0~200范围内修改值。
说明:

创建仓库时默认的提交规则(default)中的单文件大小限制为200MB,新建提交规则时单文件大小限制默认推荐50MB。

二进制规则

非必填。

二进制规则默认不勾选,表示二进制文件默认可以上传【需满足单文件不超过上面设置的文件大小上限】。当“禁止新增二进制文件”被勾选时,“允许修改二进制文件”“二进制文件白名单”“特权用户”才生效。”允许修改二进制文件“勾选后,提交文件为modify状态的二进制文件不会拦截,可直接上传。二进制文件可以直接删除,不会进行二进制检查。

  • 禁止新增二进制文件(对特权用户无效)。
  • 允许修改二进制文件(对特权用户无效)。
  • 二进制文件白名单(可直接入库的文件,限制2000个字符)。
  • 特权用户(特权用户可直接推送所有二进制文件入库,特权用户上限为50人)。
说明:

具有推送权限的仓库成员可作为特权用户。

规则生效时间

非必填。

在生效日期之后创建的所有提交都必须与hook设置相匹配才能被推送。如果此字段为空,则无论提交日期如何,都将检查所有提交。

不推荐将二进制文件存放至代码托管仓库,会影响代码仓的性能和稳定性。

表3 常见正则表达式示例

规则

示例

单个a或b或c字符

[abc]

非a或b或c的字符

[^abc]

在a到z范围内的小写英语字母字符

[a-z]

在a到z范围外的字符

[^a-z]

在a到z或A到Z范围内的大小写英语字母字符

[a-zA-Z]

任意单个字符

.

选择 - 匹配 a 或 b

a|b

任意空白字符

\s

非空白字符

\S

阿拉伯数字字符

\d

非阿拉伯数字字符

\D

字母、数字或下划线的字符

\w

非字母、数字或下划线的字符

\W

匹配括号中的内容(不捕获)

(?:...)

匹配并捕获括号中的内容

(...)

零个或一个a

a?

零个或更多a

a*

一个及以上a

a+

三个a

a{3}

三个a以上

a{3,}

3到6个a

a{3,6}

文本开头

^

文本末尾

$

单词边界

\b

非单词边界

\B

换行符

\n

回车符

\r

制表符

\t

空字符

\0