更新时间:2025-07-24 GMT+08:00

配置提交规则

什么是提交规则

CodeArts Repo支持为代码的提交建立校验、限制规则,以确保代码质量。本章节将介绍“配置项目级的提交规则”“常见的正则表达式示例”

在配置提交规则前,用户请先查看约束与限制

满足配置权限的用户可以根据表1为项目下的所有仓库设置相同的提交规则。在配置规则过程中,用户可以参考常见的正则表达式示例

约束与限制

当用户角色为“项目经理”或者“项目管理员”,可以设置项目级提交规则。

配置项目级的提交规则

在代码托管首页,进入项目首页,选择“设置” > “策略设置” > “提交规则”

如果用户想对项目下的所有仓库设置相同的提交规则,请按照表1填写参数,并勾选“开启强制继承”

表1 仓库的“提交规则”说明

字段

说明

取值样例

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

Signed-off-by签名用于记录对代码进行修改的开发人员,表示该开发者正式认可所提交的内容,并愿意承担相应责任。这种方法有助于确保贡献的质量,并提供透明的方式来追踪贡献者。

如果勾选,表示只允许Signed-off-by签名的提交才能推送到仓库。

当前支持以下两种方式签名:

  • 在线签名:

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

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

在Git客户端进行commit时,执行如下命令,“-s”表示在提交信息中添加签名(Signed-off-by),用户需要参考相关操作,提前在客户端配置好签名和邮箱。

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

勾选此选项后,使用示例如下:

  • 在线签名:

    在线提交文件时,需要按照如下图所示的格式填写提交信息,否则会报错“拒绝推送未签名的提交”

  • Git客户端签名:

    在本地Git客户端提交时,执行如下命令,表示把更改提交到版本控制系统中,提交信息是“New File”

git commit -s -m "New File"

执行完后,可继续执行git show查看签名效果。

拒绝未GPG签名的提交

如果勾选此选项,表示只允许GPG签名的提交才能推送到仓库。用户可参考配置GPG公钥配置。

Git客户端签名方式:

在Git客户端进行Commit时,需增加“-S”参数,表示提交时使用GPG(GNU Privacy Guard)签名来验证提交者的身份。

git commit -S -m "用户的提交备注"

当用户使用Git客户端进行Tag时,需增加“-s”参数,表示在创建标签时使用GPG签名来验证标签的真实性。

git tag -s "用户的标签备注"

勾选此选项后,用户执行如下命令,提交信息为“update readme”

git commit -S -m "update readme"

执行成功后,如下图所示,会提示用户输入GPG密钥的密码。

如下图所示,用户可以继续执行如下命令,查看GPG签名提交的记录。

不允许删除Tags

勾选后,禁止通过在线或者通过客户端命令的方式删除Tags。

勾选此选项后,在删除任意Tag时,会报错“提交规则设置不可删除tag”

阻止包含涉密文件的提交

涉密文件名包含“id_rsa”“id_dsa”文件。勾选此选项后,在线或本地提交新建文件时,文件名包含“rsa”“id_rsa”“dsa”或者“id_dsa”均会报错。

勾选此选项后,新建文件名称为“test_id_rsa”时,会报错“文件 test_id_rsa可能包含敏感信息,禁止提交”

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

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

由于git push -f表示将目前用户本地的代码库推送到Repo并覆盖,推荐勾选此选项。

勾选此选项后,本地执行git push -f命令时,会出现如下图所示的回显,报错

“CodeArts Repo: You are not allowed to force push code to a protected branch on this repository.”

如果用户想对项目下仓库的指定分支设置提交规则,请用户单击“新建提交规则”,参数填写请参见表格表2

表2 ”提交规则”的参数说明

参数名

参数说明

取值样例

规则名称

自定义规则名称。

Test_Rule

分支规则

需要输入完整规则名或创建一个正则表达式。需要对输入进行校验,包括分支名的校验和正则表达式校验。

“Branch_*”,表示所有的分支名都需要以“Branch_”开头。

提交规则

非必填。

  • 提交信息匹配规则:提交信息默认为空,不会对提交信息校验,任何提交信息都可以提交。若符合正则匹配,则允许提交。用户也可以设置在提交信息中必须包含工作项单号,实现代码的E2E追溯,限制500个字符。
  • 提交信息负面匹配规则提交信息负面匹配规则默认为空,不会对提交信息校验,任何提交信息都可以提交。若符合正则匹配,则不允许提交。限制500个字符。
  • 提交人:提交人默认为空,不会对提交人校验,任何人都可以提交,限制200个字符。

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

  • 提交人邮箱地址:提交人邮箱地址默认为空,不会对提交人邮箱地址校验,任何邮箱地址都可以提交,限制200个字符。

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

  • 提交信息匹配规则:“\d+\..*”“\d”表示任意十进制数字,“+”表示“\d”可以出现一次或者多次,“.”表示除换行符以外的任意单个字符,“\.”表示匹配“.”,即该正则表达式匹配会以一个或者多个数字开头,后面跟着一个点号,再跟随任意数量的其他字符(除换行符)的字符串。例如,可以匹配“123.”“456.abc”等形式的字符串,满足此匹配规则的提交信息才可提交。
  • 提交信息负面匹配规则:置空。
  • 提交人:“/([a-zA-Z]d){7}/”,表示匹配连续出现7次的以一个字母后跟一个数字组成的字符串。例如,“a1b2c3d4e5f6g7d8”符合该正则表达式。
  • 提交人邮箱地址:“@my-company.com$”,表示匹配任何以“@my-company.com”结尾的字符串。例如,“Test@my-company.com”符合该正则表达式。

更多正则表达式规则可参考常见的正则表达式示例

文件基本属性规则

非必填。

  • 禁止提交的文件名称:禁止提交的文件名称规则默认为空,不会对文件名校验,任何文件都可以提交,建议正则编写时使用规范的正则语句进行匹配,文件名禁用规则处默认会根据规则校验文件所属路径,限制2000个字符。
  • 单文件大小限制(MB):表示添加或更新文件大小超过默认值,推送将被拒绝。用户可以更改默认值大小。
  • 禁止提交的文件名称:“(\.jar|\.exe)$”,表示匹配任何以“ .jar”“.exe”结尾的文件名。
  • 单文件大小限制(MB):50。

二进制规则

非必填。为保证仓库性能,建议用户勾选“禁止新增二进制文件(对特权用户无效)”选项。

二进制规则默认不勾选,默认勾选“禁止禁止新增二进制文件(对特权用户无效)”“允许修改二进制文件(对特权用户无效)”勾选后,提交文件为modify状态的二进制文件不会拦截,可直接上传。二进制文件可以直接删除,不会进行二进制检查。

  • 禁止新增二进制文件(对特权用户无效)。
  • 允许修改二进制文件(对特权用户无效)。
  • 二进制文件白名单(可直接入库的文件,限制2000个字符)。
  • 特权用户(特权用户上限为50人)。如果特权用户已不是仓库成员,单击“保存”会报错“特权用户校验失败”,将非仓库成员的特权用户移除即可保存成功。

示例:勾选“禁止新增二进制文件(对特权用户无效)”选项。

规则生效时间

非必填。

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

示例:2025/4/15。

常见的正则表达式示例

常见的正则表达式示例可参考常见的正则表达式示例

表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

管理提交规则

如下图所示,单击提交规则所在行的,可查看提交规则详情。单击,可修改规则并重新保存。单击,可删除此提交规则。

图1 提交规则详情

相关操作

  • 执行如下命令,在Git配置全局用户名。
git config --global user.name "用户的名字"
  • 执行如下命令,在Git设置全局邮箱。
git config --global user.email "用户的邮箱地址"