更新时间:2024-11-13 GMT+08:00
分享

配置项目级的提交规则

在代码托管首页,进入项目首页,选择“设置” > “策略设置” > “仓库设置”。参数填写请参见表格表1

表1 项目级仓库设置参数填写表格

参数

说明

开启强制继承

非必填参数。如果勾选此参数,本项目下的所有代码组和代码仓库均使用以下参数的设置,且代码组和仓库下设置不可更改,请谨慎选择。

禁止Fork仓

非必填参数。勾选此选项,表示任何人不可以Fork该项目下的代码仓库。

MR预合并

非必填参数。勾选此选项,表示启用MR预合,服务端会自动生成MR预合并的代码,相比客户端使用命令做预合并操作更高效简洁、构建结果更准确,适用于对构建实时性要求严格的场景。

分支名规则

非必填参数。所有分支名都必须匹配正则表达式,分支名规则不能超过500个字符。如果此字段不填写,则允许任何分支名。规则需要满足基本的Tag命名规则:

  • 不能超过500个字符。
  • 不支持以 - . refs/heads/ refs/remotes/ 开头,不支持空格 [ \ < ~ ^ : ? * ! ( ) ' " | 等特殊字符,不支持以. / .lock结尾。

Tag名规则

非必填参数。所有Tag名都必须匹配正则表达式。如果此字段不填写,则允许任何Tag名。 需满足基本的Tag命名规则:

  • 不能超过500个字符。
  • 不支持以 - . refs/heads/ refs/remotes/ 开头,不支持空格 [ \ < ~ ^ : ? * ! ( ) ' " | 等特殊字符,不支持以. / .lock结尾。

配置项目级的保护分支规则

CodeArts Repo可以保护代码分支的安全性,阻止管理者外的人推送代码、阻止任何人强行推送代码或者阻止任何人删除这个分支,您可以将这个分支设置保护分支。具体具体操作过程如下:在代码托管首页,进入项目首页,选择“设置” > “策略设置” > “保护分支”,单击“新建保护分支”,请根据如下步骤填写参数:

  1. 填写分支名称。该参数必填,请您根据自己的需要输入完整的分支名或者带通配符的分支名。如果分支中包含单斜杠(/),由于fnmatch语法规则,该分支无法用通配符“*”匹配。
  2. 可以为管理员/项目经理、committer和开发人员设置推送或者合并的权限,两种权限不能同时拥有,原因是保护分支不能强行被推送代码或者合入代码,支持批量新建、编辑、删除保护分支。

如果您想让本项目下所有代码组和仓库均使用以上设置,勾选“开启强制继承”即可。

配置项目级的提交规则

CodeArts Repo支持为代码的提交建立校验、限制规则,以确保代码质量。在代码托管首页,进入项目首页,选择“设置” > “策略设置” > “提交规则”,单击“新建提交规则”,参数填写请参见表格表2

表2 项目级提交规则的参数填写

参数名

参数说明

规则名称

必填参数,自定义规则名称。

分支规则

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

提交规则

非必填。

  • 提交信息匹配规则:提交信息默认为空,不会对提交信息校验,任何提交信息都可以提交。若符合正则匹配,则允许提交。您也可以设置在提交信息中必须包含工作项单号,实现代码的E2E追溯,限制500个字符。
  • 提交信息负面匹配规则提交信息负面匹配规则默认为空,不会对提交信息校验,任何提交信息都可以提交。若符合正则匹配,则不允许提交。容限制500个字符。
  • 提交人:提交人默认为空,不会对提交人校验,任何人都可以提交,限制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”设置邮箱。

    例如:

    设置提交人邮箱规则:@my-company.com$ 

文件基本属性规则

非必填。

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

    例如:

    设置禁止提交的文件名称规则:(\.jar|\.exe)$
  • 单文件大小限制(MB):文件大小上限默认显示为50,表示添加或更新文件大小超过50MB,推送将被拒绝。
说明:

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

二进制规则

非必填。

二进制规则默认不勾选,默认勾选“禁止禁止新增二进制文件(对特权用户无效)”“允许修改二进制文件”勾选后,提交文件为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

配置项目级的合并请求规则

合并请求规则包含三个部分:合入机制、合入条件、MR设置和合并模式。

表4 合入机制的参数说明

参数

说明

合入机制

必填参数。包含两个选项:

  • 打分机制:包含代码检视,以打分为基础,可设置最低合入分值,分值范围为0~5分。只有分数和必选评审达到门禁条件时,代码才可以合入,勾选打分机制时需设置最低分值。
  • 审核机制:包含代码检视和合并审核两个步骤,以通过人数为基础,只有审核通过的人数达到门禁条件时,代码才可以合入。
    说明:
    • 合并请求默认为“审核机制”,可手动切换为“打分机制”
    • 修改合入机制后,会改变合并请求的工作流,但之前创建的合并请求仍保留之前的合入机制。
表5 合入条件参数说明

参数

说明

合入条件

非必填参数。包括两个选项:

  • 勾选“评审问题全部解决才能合入”,如果评审意见被勾选为“这是一个需要被解决的问题”,则合入条件会提示“存在未解决的评审意见”“合入”按钮置灰;如果只是一个普通的评审意见,则不存在“已解决”开关,也不会被合入条件拦截。
  • 如果勾选“必须与CodeArts Req关联”,被关联的所有E2E单号校验必须通过;一个MR只能关联一个单号;可添加多个分支配置合并请求策略,支持手动输入通配符匹配,按回车确认,如:*-stable或production/*。
表6 MR设置参数说明

参数

说明

禁止合入自己创建的合并请求

勾选后,您在查看自己创建的MR时,“合入”按钮置灰,表示自己无法合入代码,需要找其他有合入权限的人合入。

禁止审核自己创建的合并请求

勾选后,您在查看自己创建的MR时,“审核”按钮置灰,自己无法审核,需要找其他有审核权限的人审核。

禁止检视自己创建的合并请求

勾选后,您在查看自己创建的MR时,“检视”按钮置灰,自己无法检视,需要找其他有检视权限的人检视。

允许仓库管理员强制合入

项目创建者和管理员有强制合入的权限,当合入条件不满足,也可通过“强行合并”按钮合入MR。

允许合并请求合并后继续做代码检视和评论

勾选后,已合入MR可继续做代码检视、评论。

是否将自动合并的MR状态标记为关闭状态(如果B MR中的所有commits都包含在A MR中,那么当A MR合并后,则B MR会自动合并。默认B MR会标记为merged状态,可以通过该选项控制将B MR标记为Closed状态)

  • 未勾选时,自动合并的MR被标记为已合并。
  • 勾选后,自动合并的MR的状态将会标记为关闭状态。

不能重新打开一个已经关闭的合并请求

勾选后,当分支合并请求已经关闭后,不能将其重新置回“开启”状态,右上方的“重开”按钮将隐藏。

此设置一般用于流程管控,使历史评审不会被篡改。

合并请求合入后,默认删除源分支

合并成功后,源分支将被删除。

  • 已经设置成保护分支的源分支不会被删除。
  • 此设置对历史合入请求,不会生效,不必担心启用此设置会丢失分支。

禁止Squash合并

勾选后,“Squash合并”按钮被禁止,且合并请求中无该功能使用入口。

新建合并请求,默认开启Squash合并

Squash合并是指Git在做两个分支间的合并时,会把被合并分支上的所有变更“压缩(squash)”成一个提交,追加到当前分支的后面作为“合并提交”(merge commit),可以使分支变得简洁。Squash合并和普通Merge合并唯一的区别体现在提交历史上:对于普通Merge而言,在当前分支上的合并提交通常会有两个提交信息;而Squash Merge只有一个提交信息。

配置项目级的成员同步

进入项目首页,选择左侧导航栏“代码”>“代码托管”,选择“设置” > “安全设置” > “成员同步”

开启“同步项目成员”后,勾选要同步的角色,开启后,自动同步所选角色项目成员至代码组及仓库,项目经理不依赖开关始终同步,可单击刷新按钮触发一次全量同步。

当项目成员有新增、删除或者修改,实现自动同步。

历史项目的“同步项目成员”默认关闭,新建的项目默认开启此功能,且默认勾选“项目经理”“Committer”“开发人员”

相关文档