配置提交规则
什么是提交规则
CodeArts Repo支持为代码的提交建立校验、限制规则,以确保代码质量。本章节将介绍“配置项目级的提交规则”及“常见的正则表达式示例”。
在配置提交规则前,用户请先查看约束与限制。
满足配置权限的用户可以根据表1为项目下的所有仓库设置相同的提交规则。在配置规则过程中,用户可以参考常见的正则表达式示例。
配置项目级的提交规则
在代码托管首页,进入项目首页,选择“设置” > “策略设置” > “提交规则”。
如果用户想对项目下的所有仓库设置相同的提交规则,请按照表1填写参数,并勾选“开启强制继承”。
字段 |
说明 |
取值样例 |
---|---|---|
拒绝未Signed-off-by签名的提交 |
Signed-off-by签名用于记录对代码进行修改的开发人员,表示该开发者正式认可所提交的内容,并愿意承担相应责任。这种方法有助于确保贡献的质量,并提供透明的方式来追踪贡献者。 如果勾选,表示只允许Signed-off-by签名的提交才能推送到仓库。 当前支持以下两种方式签名:
在代码托管服务中进行在线commit时,编写提交信息需采用以下格式: commit message #此处填写自定义提交信息。 #此处为空行。 Signed-off-by:自定义签名 #此处在“Signed-off-by:”后面填写自定义签名。
在Git客户端进行commit时,执行如下命令,“-s”表示在提交信息中添加签名(Signed-off-by),用户需要参考相关操作,提前在客户端配置好签名和邮箱。 git commit -s -m “用户的提交备注” |
勾选此选项后,使用示例如下:
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。
参数名 |
参数说明 |
取值样例 |
---|---|---|
规则名称 |
自定义规则名称。 |
Test_Rule |
分支规则 |
需要输入完整规则名或创建一个正则表达式。需要对输入进行校验,包括分支名的校验和正则表达式校验。 |
“Branch_*”,表示所有的分支名都需要以“Branch_”开头。 |
提交规则 |
非必填。
|
更多正则表达式规则可参考常见的正则表达式示例。 |
文件基本属性规则 |
非必填。
|
|
二进制规则 |
非必填。为保证仓库性能,建议用户勾选“禁止新增二进制文件(对特权用户无效)”选项。 二进制规则默认不勾选,默认勾选“禁止禁止新增二进制文件(对特权用户无效)”。“允许修改二进制文件(对特权用户无效)”勾选后,提交文件为modify状态的二进制文件不会拦截,可直接上传。二进制文件可以直接删除,不会进行二进制检查。
|
示例:勾选“禁止新增二进制文件(对特权用户无效)”选项。 |
规则生效时间 |
非必填。 在生效日期之后创建的所有提交都必须与hook设置相匹配才能被推送。如果此字段为空,则无论提交日期如何,都将检查所有提交。 |
示例:2025/4/15。 |
常见的正则表达式示例
常见的正则表达式示例可参考常见的正则表达式示例。
规则 |
示例 |
---|---|
单个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 |
git config --global user.name "用户的名字"
- 执行如下命令,在Git设置全局邮箱。
git config --global user.email "用户的邮箱地址"