Expand description
项目根目录(消除进程级 current_dir 依赖的注入载体)
背景:全仓库多处通过 std::env::current_dir() 推导项目根(扫描根、
wiki_plan.yaml 定位、git 仓库定位、指纹键前缀),导致三方面问题:
- 不可测试:测试进程的 cwd 是测试运行目录,与被测代码假设的 “项目根“不一致,根路径相关断言只能在真实仓库里跑;
- 不可常驻:watch 长驻进程 / 服务化场景中 cwd 可被外部改变, 依赖 cwd 的路径推导会静默漂移(扫描范围、git 仓库定位全错);
- 不可并行:多实例(并行子代理、多输出目录)共享同一 cwd 时 相互干扰。
方案:CLI 显式 –root 参数(main.rs)→ 本类型全链路注入。各模块
的 *at 变体以 root 为首参(scan_and_parse_at / resolve_plan_at /
get_head_commit_hash_at / run_incremental_update_at / classify
entity_changes_at / generate_schema_documents_at),生产代码不再
直接调用 std::env::current_dir()。ProjectRoot::from_cwd 仅保留
为 CLI 未传 –root 时的默认值(main.rs resolve_root)。
Structs§
- Project
Root - 项目根目录(仅承载路径,不校验存在性)