diff --git a/GLOB.md b/GLOB.md new file mode 100644 index 0000000..f2b57a2 --- /dev/null +++ b/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) diff --git a/README.md b/README.md index 4a7e40b..259a82d 100644 --- a/README.md +++ b/README.md @@ -64,3 +64,13 @@ HTTPS 推送时,用户名用本站 Git 账号;密码建议用:**设置 → | [ABOUT-DKFILE.md](./ABOUT-DKFILE.md) | DKFile / Source Git 简介与链接 | 欢迎 VIP 用户按教程建自己的私有仓练手。有问题联系 **IDO老徐**。 + + +--- + +## 进阶文档 + +| 文档 | 说明 | +|------|------| +| [GLOB.md](./GLOB.md) | Glob 模式语法(Web 钩子「分支过滤」、分支保护名称匹配等) | +