3.5 KiB
3.5 KiB
Glob 模式语法说明(分支过滤 / 名称匹配)
Source Git(及常见 Git 托管)里,「分支过滤」「分支保护名称」等字段使用 glob 模式匹配。本文提炼常用写法,方便在 Web 钩子等场景直接查阅。
去哪里配置 Web 钩子
登录 Source Git 后:
| 范围 | 入口 |
|---|---|
| 个人(作用于你有权限的仓库事件) | 用户设置 → Web 钩子 |
| 某个仓库 | 打开仓库 → 设置 → Web 钩子(路径形如 …/仓库名/settings/hooks) |
| 组织 | 组织页 → 设置 → Web 钩子 |
配置时若填写「分支过滤」,语法见下文。
一句话
用通配符描述「匹配哪些名字」:留空或只写 * / ** 表示全部;写具体规则则只匹配命中的分支(或路径)。
Web 钩子:分支过滤
适用于:推送、创建分支、删除分支 等带 Git 引用的事件。入口见上表。
| 填写内容 | 效果 |
|---|---|
空,或 *,或 ** |
所有分支相关事件都会投递 |
main |
仅 main |
release* |
release、release-1、release/v2 等(* 不跨 / 时依实现;本库 * 不匹配分隔符,见下) |
{main,develop} |
main 或 develop |
{main,release/*} |
main,或 release/ 下一级名称 |
refs/tags/v* |
也可写完整 ref(标签等) |
说明: 工单、合并请求评论等不带分支 ref 的事件,一般会忽略分支过滤,仍按你勾选的事件类型投递。
常用符号
| 符号 | 含义 | 例子 | 能匹配 | 不能匹配 |
|---|---|---|---|---|
* |
一段字符(不含路径分隔符 /) |
release* |
release、release-1 |
跨多级目录时需配合 ** |
** |
任意字符(可跨分隔符) | api.**.com(若以 . 为分隔) |
多层 | — |
? |
单个非分隔符字符 | ?at |
cat、fat |
at |
[abc] |
字符集合之一 | [abc]at |
cat、bat |
fat |
[!abc] |
不在集合中的字符 | [!abc]at |
fat |
cat |
[a-c] |
字符范围 | [a-c]at |
cat、bat |
fat |
{a,b,c} |
多选一(逗号分隔,无空格) | {main,develop} |
main 或 develop |
master |
\ |
转义后面的特殊字符 | 字面量 * 时需要转义 |
— | — |
推荐示例(钩子分支过滤)
main
只监听 main。
{main,develop,release/*}
监听 main、develop,以及 release/ 下的分支(如 release/v1)。
feature/*
只监听 feature/ 下一层分支名。
*
所有分支(与留空类似,按产品实现为准;Source Git 钩子说明:空或 * 表示全部)。
分支保护等场景的补充例子
这些字段同样用 glob,可写路径风格:
main
release/**
.drone.yml
/docs/**/*.txt
多个文件模式时,有的界面用分号 ; 分隔,请以该字段旁的说明为准。
注意
{a, b}里不要随便加空格;应写成{a,b}。- 需要匹配字面量
*、?、{等时,用\转义。 - 本文面向产品使用;常用写法见上文表格与示例即可。
相关
- Source Git:https://git.dkfile.net/
- 个人 Web 钩子:https://git.dkfile.net/user/settings/hooks
- 本演示仓说明:README.md