Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

diff

alias: d

两种对比模式:对当前配置的输出文件做文本级 diff(file,默认),或对两个订阅源做节点级 diff(nodes)。

diff file(默认模式)

thurgio diff [file] [NAME]

bare thurgio diff 等价于 thurgio diff file

执行过程:

  1. 读取 setting.output 中配置的所有输出文件的当前内容(不存在的文件视为空内容)。
  2. 执行一次强制构建(等价 build --force,会真实访问订阅源)。
  3. 逐文件打印新旧内容的行级差异:- 删除行、+ 新增行、空格前缀为未变更行。
参数说明
NAME可选——只对比路径中包含该子串的输出文件
# 对比所有输出
thurgio diff

# 只对比路径含 example 的输出
thurgio diff file example

NAME 匹配的是输出路径子串,不是 provider 名;但输出路径通常包含 item 名,按名过滤在多数场景下等效。

diff nodes

thurgio diff nodes <from> <to>

节点级对比两个订阅源:

  • http(s):// 开头视为 URL,其余视为本地文件路径。
  • 格式自动检测(Clash / V2RayN / SIP002 等),不套用规则管线——对比的是原始节点。
  • 不可解析的条目被丢弃并记 debug 日志。

输出分组

1 added, 0 removed, 1 changed, 1 renamed, 1 unchanged
    + HK-01 (trojan 9.9.9.9:443)
    ~ US-01: ss 1.2.3.4:8388 → ss 1.2.3.4:9000
    ↻ TW-01 → TW-02 (ss 6.6.6.6:8388)
分组标记颜色判定
added+绿仅新源中存在
removed-仅旧源中存在
changed~同名但指纹不同
renamed指纹相同但名称不同
unchanged完全一致

指纹 = 去掉 name 字段后的全部序列化字段(type/server/port/密码等),任一变化即视为 changed。全部无变化时整行绿色输出 N unchanged。颜色遵循 RUST_LOG_ANSI / NO_COLOR

示例

# 对比升级订阅前后的节点变化
thurgio diff nodes prov/old.yaml https://example.com/sub

# 对比两个本地文件
thurgio diff nodes prov/a.yaml prov/b.yaml