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,也完全不影响使用。
阅读全文