dbk-rust-gates

Installation
SKILL.md

Rust 提交/推送门禁

Rust 项目(以存在 Cargo.toml 为准)的硬性检查顺序。fmt / clippy 命令原样执行。test 保留 --all-features,按影响范围选择包、target 和用例,不默认执行全量测试。

第 0 步:判定本次改动是否涉及 Rust

commit 前检查 git status --porcelain --untracked-files=all,包含已暂存、未暂存和未跟踪文件。push 前无论工作区是否干净,都先确定分支累计变更:

  1. 优先使用 origin/main,不存在时使用本地 main,记录所用引用及 SHA。引用已知过期时先更新。两者都不存在或无法找到共同祖先时停止并询问基线,不用当前分支的 upstream 或 HEAD^ 代替。
  2. 用 git merge-base <main-ref> HEAD 得到 base,用 git diff --name-status --find-renames <base> HEAD 和对应 diff 检查本分支全部变更,不只检查最后一次提交或尚未推送的提交。
  3. 合并工作区状态中的改动路径检查影响,重命名同时检查新旧路径,删除也算变更。未提交改动不能作为待推送 HEAD 已通过测试的证据,push 前必须确认测试对应待推送代码状态。

在对应范围中筛选:

  • *.rs(任意路径:src/ 源码、build.rs、examples/、tests/、benches/)→ Rust 源码改动
  • Cargo.toml / Cargo.lock(任意层级,workspace 子 crate 也算)→ 清单/依赖改动

测试夹具、快照、生成器输入、.cargo/、工具链或构建配置虽非 .rs,只要影响 Rust 构建或测试也需纳入。只有确认整个范围均不影响 Rust 的纯文档等改动,才跳过全部门禁。

Installs
13
GitHub Stars
3
First Seen
Aug 25, 2026