100 行
2.9 KiB
Markdown
100 行
2.9 KiB
Markdown
# Glob 模式语法说明(分支过滤 / 名称匹配)
|
||
|
||
Source Git(及常见 Git 托管)里,「分支过滤」「分支保护名称」等字段使用 **glob** 模式匹配。本文提炼常用写法,方便在 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. 需要匹配字面量 `*`、`?`、`{` 等时,用 `\` 转义。
|
||
3. 本文面向产品使用;常用写法见上文表格与示例即可。
|
||
|
||
---
|
||
|
||
## 相关
|
||
|
||
- Source Git:https://git.dkfile.net/
|
||
- 本演示仓说明:[README.md](./README.md)
|