分支设置
本文介绍代码库的分支设置功能说明。
1.默认分支
默认分支作为 Clone、创建分支、合并请求、代码浏览的基础分支存在,同时可防护分支被误删除。作为代码库管理员可以按团队开发习惯修改默认分支,下拉选择需要修改的分支。
2.保护分支
保护分支定义:限制删除分支,限制 Force Push 强制推送。
代码库管理员设置合适规则的分支进行保护,被设置成保护分支即不允许任何人删除分支和强制推送,前者主要是对重要分支保护防止误删除,后者是避免强制推送的操作会使 Commit 无法追溯。
新建保护分支规则
分支选择:支持两种形态
- 填写具体分支完整名称
- 分支通配符规则(目前只支持 ? 和 *),当匹配多个分支时展示所有匹配的分支。
如果一个保护分支存在多个规则,以哪个为主? 生效逻辑:如果代码库的某个分支可匹配多个保护分支规则,则包含特定分支名称的规则具有最高优先级;如果某个分支存在多个通配符规则匹配,则最早创建的分支规则将具有更高的优先级。
如:代码库中有分支master、master-1、master-prod-1,有规则顺序如下:master-、master-1、master-prod-,匹配规则如下:
| 分支 | 可匹配规则 | 使用的匹配规则 |
| ---- | ---- | ---- |
| master-1 | master-,master-1 | master-1 |
| master-2 | master- | master- |
| master-prod-1 | master- ,master-prod- | master- |
推送规则
展示可以直接 Push 到该保护分支的角色或人员。 默认允许管理者和开发者。一旦勾选取消某种角色,意味着该角色不允许进行直接推送。
无:不允许任何人支持进行推送。
可以设置允许推送的人员:可在代码库的成员中进行选择,但生效的前提是该选择的用户有代码库的写入权限;
合并规则
即允许点击变更请求中的合并操作的角色或人员。
默认允许管理者和开发者。一旦勾选取消某种角色,意味着该角色不允许进行合并操作。
针对代码评审可以进行规则限制
允许创建者通过:是 / 否
代码评审的评论已经全部解决:是 / 否
普通评审模式,可设置评审通过的人数要求、允许通过的角色限制、默认评审人。例如:
最少评审通过人数:1 允许通过合并请求:管理员 + 开发者 默认评审者:如果没填人,该项不展示,限制最多20位
评审文件白名单
在规范的情况下,变更请求必须至少有一个评审人,但是有时候只是提交几个不敏感的文件,需要人工介入评审的必要性不大,希望能够针对这类文件直接支持合并,提高工作效率。
代码工程中大部分文件需要走评审卡点,小部分不重要的文件改动没必要每次都需要人工评审,但是为了保证合入的稳定性,合入过程通常需要走CI自动化检查后再合并,所以仍然不允许直接推送目标分支,而是要走评审流程。
这类需求可以使用评审文件白名单去解决。
当设置了评审文件白名单后,当评审涉及该文件时:
若变更请求仅包含该白名单内的文件——变更请求不受「评审通过最少人数」限制,但其他条件如评论要求全部解决仍然生效;
若变更请求部分包含该白名单内的文件——变更请求对应保护分支全部规则均生效;
评审文件白名单书写规则
文件白名单使用以下规则匹配文件路径:
?匹配一个字符
* 匹配零个或多个字符
** 匹配路径中的零个或多个目录
示例如下:
# 匹配 atomgit/test.java ,同时也匹配 atomgit/tast.java 或 atomgit/txst.java;
atomgit/t?st.java
# 匹配 atomgit 目录下所有以 .java 结尾的文件;
atomgit/*.java
# 匹配 atomgit 目录下所有名为 test.java 的文件;
atomgit/**/test.java
# 匹配 org/springframework目录下以 .java 结尾的文件;
org/springframework/**/*.java
# 匹配 org/springframework/servlet/bla.java,同时也匹配 org/springframework/testing/servlet/bla.java 或 org/servlet/bla.java
org/**/servlet/bla.java