一、简介
开源pre-commit框架,可自定义git钩子脚本。用于本地git提交时,可是实现对项目代码进行格式化、静态检查、单元测试检查等
二、安装
pre-commit框架基于python语言开发,安装pre-commit前,请先确认本地环境是否已安装python
使用pip、conda或Homebrew安装 (windows等操作系统可切换至git bash,安装并执行pip命令)
# 使用pip安装
pip install pre-commit
# 使用conda安装
conda install -c conda-forge pre-commit
# 使用brew安装
brew install pre-commit
三、使用
1. 设置pre-commit-hooks配置文件
pre-commit依赖于项目根目录下的`.pre-commit-config.yaml`配置文件。需要手动在根目录创建此文件。
# 执行以下命令,可以生成默认配置文件
pre-commit sample-config > .pre-commit-config.yaml
2. 安装git hooks
设置好配置文件后,需安装钩子脚本得以生效。
# 执行以下命令,安装git hooks
pre-commit install
3. 对所有文件进行检查
默认情况下,git hooks部分脚本只对处于当前阶段的文件进行检查。若对所有文件进行检查
# 执行以下命令,进行全文件检查
pre-commit run --all-files
4. 跳过当前pre-commit hooks
需要跳过当前阶段的hook检查脚本时
# 执行以下命令,跳过当前阶段hook,例:
git commit -m "xxx" --no-verify
5. 自动启用pre-commit
当多个项目配置.pre-commit-config.yaml时,需在每个项目目录下手动执行`pre-commit install`命令,较为繁琐。
官方提供一个自动启用pre-commit方案。如果存在`.pre-commit-config.yaml`配置文件并进行Git提交时,则会自动进行pre-commit检测,如果没有该配置文件,则跳过
# 设置git全局变量,制定初始化模板目录
git config --global init.templateDir ~/.git-template
# 自动设置初始化模板
pre-commit init-templatedir ~/.git-template
6. 卸载git hooks
当确认不再使用pre-commit框架下的钩子脚本时,卸载git hooks
# 执行以下命令,卸载git hooks
pre-commit uninstall
7. hook开发
自定义hook脚本,并将hook配置添加至`.pre-commit-hooks.yaml`配置文件中。在其他项目中执行
# 本地仓库测试,例:
pre-commit try-repo ../pre-commit-hooks/ test --verbose --all-files