#!/usr/bin/env python3 """发布产物 × 打标签的树:**逐文件**核对(T-WEB-018) ## 为什么需要 「发布包里的东西必须等于打标签的那棵树」这条规则此前是靠人手工抽查几个文件 (README、contracts/VERSION…)来确认的 —— 而抽查必然会漏。本轮实测就发现 两个认知错误: * Web 的发布包**包含** `web-server/test/**`(33 个文件)而我此前以为不含, 于是 `test/**` 的改动是否影响产物从来没被检查过; * 发布包里另有构建产物(`OpenDance.exe` / `OpenDance.pck`)与 git 无关, 必须与工作树的导出结果比 —— 只比源码文件是不够的。 本脚本把这条规则变成**可重复的全量核对**: 对发布包里的**每一个**文件,按路径决定比较基准: | 路径 | 比较基准 | |--|--| | 构建产物(见 `BUILD_OUTPUTS`) | 工作树里对应的构建输出 | | 其余文件 | `git show :<路径>`(打标签的树) | 任何一处不一致 / 包内多余(既不在 git 也不在构建输出)/ 缺失都会列出并以非 0 退出。 ## 用法(在仓库根目录执行) python3