docs: 增加 Glob 模式语法说明,供 Web 钩子分支过滤等查阅。
这个提交包含在:
父节点
0ae03e8d43
当前提交
68cd564a6a
99
GLOB.md
普通文件
99
GLOB.md
普通文件
@ -0,0 +1,99 @@
|
||||
# Glob 模式语法说明(分支过滤 / 名称匹配)
|
||||
|
||||
Source Git(及常见 Git 托管)里,「分支过滤」「分支保护名称」等字段使用 **glob** 模式匹配,语法与 [gobwas/glob](https://pkg.go.dev/github.com/gobwas/glob#Compile) 一致。本文提炼常用写法,方便在 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` |
|
||||
| `\` | 转义后面的特殊字符 | 字面量 `*` 时需要转义 | — | — |
|
||||
|
||||
---
|
||||
|
||||
## 推荐示例(钩子分支过滤)
|
||||
|
||||
```text
|
||||
main
|
||||
```
|
||||
|
||||
只监听 `main`。
|
||||
|
||||
```text
|
||||
{main,develop,release/*}
|
||||
```
|
||||
|
||||
监听 `main`、`develop`,以及 `release/` 下的分支(如 `release/v1`)。
|
||||
|
||||
```text
|
||||
feature/*
|
||||
```
|
||||
|
||||
只监听 `feature/` 下一层分支名。
|
||||
|
||||
```text
|
||||
*
|
||||
```
|
||||
|
||||
所有分支(与留空类似,按产品实现为准;Source Git 钩子说明:空或 `*` 表示全部)。
|
||||
|
||||
---
|
||||
|
||||
## 分支保护等场景的补充例子
|
||||
|
||||
这些字段同样用 glob,可写路径风格:
|
||||
|
||||
```text
|
||||
main
|
||||
release/**
|
||||
.drone.yml
|
||||
/docs/**/*.txt
|
||||
```
|
||||
|
||||
多个文件模式时,有的界面用**分号** `;` 分隔,请以该字段旁的说明为准。
|
||||
|
||||
---
|
||||
|
||||
## 注意
|
||||
|
||||
1. `{a, b}` 里**不要**随便加空格;应写成 `{a,b}`。
|
||||
2. 需要匹配字面量 `*`、`?`、`{` 等时,用 `\` 转义,或查阅上游 `QuoteMeta` 说明。
|
||||
3. 本文面向产品使用;完整语法与实现细节见:[gobwas/glob Compile](https://pkg.go.dev/github.com/gobwas/glob#Compile)。
|
||||
|
||||
---
|
||||
|
||||
## 相关
|
||||
|
||||
- Source Git:https://git.dkfile.net/
|
||||
- 本演示仓说明:[README.md](./README.md)
|
||||
正在加载...
在新工单中引用
屏蔽一个用户