Gitru:Rust打造的零依赖Git提交信息校验工具,如何实现疑问?
摘要:gitru 基于 Git 的 commit-msg Hook 实现,用于在提交阶段自动校验提交信息格式。 在团队协作开发中,规范的 Git 提交信息是代码追溯、版本管理、自动生成变更日志的基础。 但现实往往是: 人工约束容易遗漏 手动配置
gitru 基于 Git 的 commit-msg Hook 实现,用于在提交阶段自动校验提交信息格式。
在团队协作开发中,规范的 Git 提交信息是代码追溯、版本管理、自动生成变更日志的基础。
但现实往往是:
人工约束容易遗漏
手动配置 Hook 繁琐
提交信息格式随心所欲
生成 changelog 时异常痛苦
因此,必须由工具来保证提交信息的规范性。
市面上已有不少成熟工具,但大多基于 Node.js / Python / Shell 实现。问题是:
只是想校验一个字符串,却要先安装 Node 或 Python
版本不一致可能导致各种奇怪的问题
国内下载依赖速度慢甚至失败
安装一个工具可能要拉下一堆包
属于“操作一大堆,却还没开始进入正题”。
这些对普通开发者,尤其是新手,并不友好。
当然,这并不是否定这些工具。相反,它们非常优秀,本项目开发过程中也使用了著名的 pre-commit。与这些成熟工具相比,gitru 甚至连 hello-world 都算不上,只是一个更轻、更简单的选择。
基于以上考虑,再加上 Rust 非常适合编写 CLI 工具,于是就有了 gitru。
✨ 项目特点
🦀 Rust 编写,零依赖二进制分发
下载即可运行,无需 Node、Python 或虚拟环境。
(虽然我不想把“Rust 编写”当成卖点,免得被误会成 Rust 传教士,但和其他成熟工具相比,这确实是 gitru 少数能拿得出手的特点之一。)
⚙️ TOML 格式自定义规则
简单、清晰、易读、易维护。
⏭️ 支持通过关键字跳过校验
适用于自动化提交、紧急修复等场景。
🇨🇳 支持中文提交信息校验
不会误判中文标点,对中文开发者更友好。
🎨 错误信息带颜色输出
更直观、更易读。
🔍 支持 Footer 关键字拼写校验(Spell Check)
当提交信息疑似拼写错误时,gitru 会自动检测并给出友好提示,避免因拼写错误导致自动化流程失效。(当然,这部分依赖算法和用户配置,体验远不如当下的ai)
📘 Conventional Commits 简介
在介绍 gitru 的使用前,必须先了解业内广泛采用的提交规范 ——
Conventional Commits。
它定义了提交信息的结构:
<type>[optional scope]: <subject>
[optional body]
[optional footer(s)]
其中:
type(必填):如 feat、fix,用于分类
scope(可选):如 core、ui,用于描述影响范围
!(可选):表示破坏性变更
subject(必填):简短描述本次变更
body(可选):详细说明
footer(可选):如 BREAKING CHANGE、Closes #123
gitru 就是基于此规范实现的,并允许你通过配置文件进行自定义。
📦 安装 gitru
你可以通过三种方式安装:
方式一:直接下载二进制文件(推荐)
前往👉 GitHub Releases
下载对应平台的压缩包,解压后:
放到任意目录
加入 PATH
Linux / macOS 可能需要执行权限
方式二:通过 cargo 安装(需 Rust 环境)
cargo install gitru
方式三:本地编译
git clone https://github.com/xiyixiaodao/gitru.git
cd gitru
cargo install --path .
验证安装:
gitru --version
🛠 使用方法
一键初始化
以下命令会同时安装 Hook 并生成配置文件:
gitru ii commit-msg
它等价于:
gitru install commit-msg
gitru init commit-msg
如果文件已存在,可强制覆盖:
gitru ii commit-msg -f
卸载 Hook
gitru uninstall commit-msg
然后手动删除 .commit-msg-rule.toml。
⚙️ 自定义校验规则
gitru 的核心是配置文件 .commit-msg-rule.toml。
你只需要修改它,就能完全定制校验逻辑。
为什么选择 TOML 而不是 YAML?
YAML 结构依赖缩进,容易错位
.yaml / .yml 后缀容易混淆
TOML 更简单、可读性更强
对新手更友好
即使你不懂 TOML,也完全不影响使用。
