Skip to content

[0076] gf fmt 为 clang-format 添加文件缓存#872

Open
da-liii wants to merge 1 commit into
mainfrom
da/0076/gf_fmt
Open

[0076] gf fmt 为 clang-format 添加文件缓存#872
da-liii wants to merge 1 commit into
mainfrom
da/0076/gf_fmt

Conversation

@da-liii

@da-liii da-liii commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

摘要

gf fmt 的 C++ 格式化路径(clang-format)添加与 Scheme 格式化一致的文件内容缓存,使重复格式化大量未改动文件时跳过 clang-format 进程调用。

主要改动

  • 新增 tools/fmt/liii/goldfmt-cache.scm:把原先 scheme-fmt.scm 中的缓存函数抽取为共享模块。
  • tools/fmt/liii/scheme-fmt.scm:复用新的共享缓存模块,删除本地缓存实现。
  • tools/fmt/liii/cpp-fmt.scm
    • format-cpp-file / format-one-cpp 先查缓存,命中则跳过 clang-format
    • check-cpp-file 同样使用缓存;
    • format-cpp-files 返回 (total updated cached),与 Scheme 协议保持一致。
  • 新增 tests/liii/goldfmt-cache-test.scm 覆盖缓存路径计算、命中/写入逻辑。
  • 新增 devel/0076.md 任务文档。

测试

  • 单元测试:bin/gf tests/liii/goldfmt-cache-test.scm 通过(5/5)。
  • bin/gf fmt --check 在当前仓库通过。
  • ~/git/mogan 实测:
    • 首次格式化:约 36 秒
    • 再次格式化:约 0.3 秒

注意事项

缓存键为文件内容 SHA-256,按 Goldfish 版本隔离。.clang-format 等配置变更不会自动失效缓存,需要手动清理 ~/.cache/goldfish/fmt

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant