配置提交规则
什么是提交规则
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”参数,表示在创建Tag时使用GPG签名来验证Tag的真实性。 git tag -s "用户的Tag备注" | 勾选此选项后,用户执行如下命令,提交信息为“update readme”。 git commit -S -m "update readme" 执行成功后,如下图所示,会提示用户输入GPG密钥的密码。
如下图所示,用户可以继续执行如下命令,查看GPG签名提交的记录。
|
不允许删除Tags | 勾选后,禁止通过在线或者通过客户端命令的方式删除Tags。 | 勾选此选项后,在删除任意Tag时,会报错“提交规则设置不可删除tag”。 |
阻止包含涉密文件的提交 | 涉密文件名包含“ssh_server_rsa”、“id_rsa”和“id_dsa”等文件。 勾选此选项后,在线或本地提交新建文件时,文件名包含“ssh”、“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。
参数名 | 参数说明 | 取值样例 |
|---|---|---|
规则名称 | 自定义规则名称,限制200个字符。 | Test_Rule |
分支规则 | 需要输入完整规则名或创建一个正则表达式。需要对输入进行校验,包括分支名的校验和正则表达式校验。限制255个字符。 | “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 |











