SuperAPI AI 工具集

plaster-from-patch

编程与开发

查看项目

更新于 10-15 20:08

技能介绍

用途:把用户已写好的 Brave-core Chromium 补丁(patches/<dashed-path>.patch)转换为等价的 Plaster 配置 rewrite/<path>.yaml,使改动以稳健的正则替换而非脆弱的上下文补丁表达。仅产出该配置文件,不修改 Chromium 源码、补丁或其他文件,也不创建 chromium_src 影子文件。

主要能力:解析补丁或源码路径得到 (source_path, patch_path) 对;读取补丁的 a/ 侧原始上游文本与 b/ 侧目标文本;按 docs/plaster.md 与 docs/plaster_dos_and_donts.md 的规则编写 substitutions,使用 pattern(字面量)或 re_pattern(需上下文、捕获组、空白灵活时),配合 re_flags: [DOTALL]、\s* 等;覆盖枚举、switch、gn 数组等场景;为每条替换写表达意图的 description。

使用方式:在 src/brave 下运行,用 git rev-parse --show-toplevel 确认位置。验证时先 cp patches/<dashed>.patch /tmp/plaster-original.patch,再执行 tools/cr/plaster.py apply rewrite/<path>.yaml,最后 diff /tmp/plaster-original.patch patches/<dashed>.patch,要求输出为空。必须指定具体 rewrite/<path>.yaml,切勿裸跑 apply。plaster.py 需要 PyYAML,缺失时可用 vpython3 或 python3 -m pip install pyyaml。完成后 git add 配置与补丁产物并提交,可提供 PR。

适用场景:Brave-core 中已用 pnpm run update_patches 生成补丁、希望改为 Plaster 管理的改动。

限制:源码须位于 patches/.repositories.cfg 列出的仓库,否则无法处理;不决定改动是否应做成 Plaster;count 默认 1,count: 0 需注释说明;若本地无法运行验证,不得声称成功。