Glob模式过滤器的工作原理
Code2Prompt 使用 glob 模式来包含或排除文件和目录,工作方式类似于 tree 或 grep 等工具。它允许您传递两个独立的 glob 模式列表:
- 包含列表 (
--include或-i) - “这些模式允许文件” - 排除列表 (
--exclude或-e) - “这些模式禁止文件”
Code2prompt 必须为项目中的每个文件决定是保留还是丢弃。本页面解释了规则以及背后的设计选择。
1. 集合和符号
Section titled “1. 集合和符号”在整个解释过程中,我们使用通常的集合符号
| 符号 | 含义 |
|---|---|
| 匹配至少一个包含模式的文件集合 | |
| 匹配至少一个排除模式的文件集合 | |
| 整个项目树(全集) | |
| 匹配两个列表的文件(重叠) | |
| 不匹配任何列表的文件 |
2. 四种情况
Section titled “2. 四种情况”四种情况概览
Section titled “四种情况概览”| 包含列表 | 排除列表 | 保留的文件 |
|---|---|---|
| A = ∅ | B = ∅ | Ω |
| A = ∅ | B ≠ ∅ | ¬B |
| A ≠ ∅ | B = ∅ | A |
| A ≠ ∅ | B ≠ ∅ | A \ B |
-
没有包含列表,没有排除列表
如果没有指定模式,则保留所有文件 (
Ω)。 -
仅排除列表
在这种情况下,Code2Prompt 充当黑名单,删除匹配排除模式的文件 (
Ω \ B = ¬B)。 -
仅包含列表
如果仅指定包含列表,Code2Prompt 充当白名单,仅保留匹配包含模式的文件 (
A)。 -
包含和排除列表
如果同时指定了两个列表,Code2Prompt 保留匹配包含模式的文件,但删除匹配排除模式的文件 (
A \ B)。
3. 关于重叠的更多信息
Section titled “3. 关于重叠的更多信息”当两个列表都存在时 (A ≠ ∅, B ≠ ∅),对于重叠 C 和其余部分 D,
您有四种逻辑可能性。
需要 C? | 需要 D? | 合理吗? |
|---|---|---|
| 否 | 否 | 默认行为 (A \ B) |
| 是 | 否 | 与情况 3 相同的行为 (A) |
| 否 | 是 | 令人惊讶(“丢弃我请求的 C,保留我没有请求的”) |
| 是 | 是 | 与情况 1 相同的行为 (Ω) |
正是由于这个原因,--include-priority 选项被删除了。因为这将与只有包含列表(情况 3)的结果相同。
4. 快速参考表
Section titled “4. 快速参考表”| 想要保留… | 使用 |
|---|---|
| 一切 | 无 -i,无 -e |
| 除某些模式之外的一切 | 仅 -e |
| 仅匹配模式的内容 | 仅 -i |
匹配 -i 的内容,减去匹配 -e 的内容 | -i 和 -e |
这种设计保持了心理模型的简单性:
- 包含列表一旦存在就是白名单。
- 排除列表是叠加在上面的黑名单。
- 重叠部分默认被丢弃