mcpField
C
commitcheck

commitcheck

本地服务
github.com/CloudCorpRecords版本控制02 周前更新

关于 commitcheck

commitcheck 是用于检查 Git 最近提交记录的命令行工具和 MCP 服务,可按提交列出消息规范问题,并依据仓库自身惯例判断签署和风格。

主要功能

  1. 01检查最近 50 条提交
  2. 02标记过长或占位主题
  3. 03检查 DCO 签署尾注
  4. 04识别主导消息风格
  5. 05附短 SHA 报告问题

适用场景

  1. 01合并前检查提交规范
  2. 02在 DCO 仓库中查找缺少签署的提交
  3. 03识别偏离本地消息风格的提交

MCP 相关

MCP 服务提供 `check_commits` 工具,接收仓库路径并以 JSON 返回检查报告。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-commitcheck": {
"command": "npx",
"args": [
"-y",
"@reneturcios/commitcheck"
]
}
}
}
启动命令npx -y @reneturcios/commitcheck

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/commitcheck0.1.0
ocighcr.io/cloudcorprecords/commitcheck:0.1.0

工具

1

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是要检查的目标路径

详细介绍

commitcheck

Git 仓库近期历史记录的提交规范检查器。它会读取最近 50 条提交,并检查主题行长度、占位主题、DCO Signed-off-by 尾注、格式错误的尾注,以及每条提交是否遵循仓库实际采用的提交信息规范。每条发现都会标明规则和对应提交的短 SHA。

安装

npx @reneturcios/commitcheck check [path]

也可以全局安装:

npm install -g @reneturcios/commitcheck

需要 Node 20 或更高版本,并且 git 位于 PATH 中。

CLI

commitcheck check [path] [--json]   # check a repo (default path: .)
commitcheck mcp                     # run the MCP server on stdio
commitcheck --version               # print the version

退出码:判定为 CLEAN 时为 0,判定为 FINDINGS 时为 1,用法错误或目标不可读时为 2,读取器提前关闭输出管道时为 141(即 shell 可见的 SIGPIPE 终止)。

发现会按照 git log 的顺序输出,最新的排在最前;对于给定的历史记录,输出顺序是确定的。

MCP

MCP 服务提供一个工具:

  • check_commits,参数为 path:运行与 CLI 相同的检查,并以 JSON 格式返回完整报告。

规则

规则严重性含义
SUBJECT-TOO-LONGmedium主题行超过 72 个字符。
SUBJECT-VAGUElow主题为空或为占位内容,例如 wip、fix、update、changes 或 .
NO-SIGNOFFmedium在历史记录遵循 DCO 规范的仓库中(见下文),该提交没有 Signed-off-by 尾注。
CONVENTION-BREAKlow主题不符合该范围内占主导地位的提交信息风格(见下文)。
MERGE-COMMITinfo合并提交,仅作为背景信息报告。合并提交的严重性永远不会高于 info。
TRAILER-MALFORMEDlowSigned-off-by 行不包含电子邮件格式,例如 Signed-off-by: Jane Doe 缺少 <[email protected]>。

当该范围内没有 medium 级别的发现时,判定为 CLEAN,否则判定为 FINDINGS。low 和 info 级别的发现会报告,但不会改变判定结果。

简明说明自适应规则

commitcheck 不会强加固定的风格。两项规范检查都会根据正在检查的范围学习:

  • DCO / sign-off。 仅当仓库明确使用 sign-off 时,提交才会被标记为 NO-SIGNOFF:该范围内至少一半的其他提交带有格式正确的 Signed-off-by 尾注。如果仓库不使用 sign-off,则不会有提交因缺少它而被标记。格式错误的 sign-off 行不计作 sign-off。
  • 提交信息规范。 会跟踪两种风格:conventional 主题(type: summary 或 type(scope): summary)和首字母大写的祈使句主题(Add the thing)。当某种风格在该范围内至少 70% 的非合并提交中出现时,它就是占主导地位的风格;不符合该风格的提交会被标记为 CONVENTION-BREAK。如果没有任何风格达到 70%,则不会标记风格问题。

限制

  • 只检查最近 50 条提交。
  • 风格检测基于统计。历史记录较短或风格混杂时,可能无法确定占主导地位的风格,此时不会产生规范相关的发现。
  • 只检查 sign-off 是否存在,不验证签名有效性。commitcheck 会确认是否存在带有电子邮件格式的 Signed-off-by 尾注;但不会验证签署者是否为作者,也不会验证签名是否真实。
  • 根据 Merge ... 主题行检测合并提交,这是 git 的默认格式;以 Merge 开头的手写主题也会被报告为合并提交。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。