文章

使用 pre-commit hook 提高本地开发效率

背景

有些编辑器检查不了的错误或者没有强提醒的错误(例如循环引包),在开发时不容易发现,代码提交后才发现编译不了。利用 git 的 hook 功能,在 commit 前就检查代码是否能编译通过,能够保证提交的代码一定能编译通过,也节省了来回 debug 的时间。

实现

在提交前实现一种 dry-run 的机制,确保代码能编译通过。如果有 Makefile,可以添加一个dry-build 的 target,例如:

.PHONY: dry-build
dry-build:
go build -o deploy/xxx cmd/xxx/main.go && rm deploy/xxx

然后编写一个 shell 脚本,命名为 pre-commit

#!/bin/bash

make dry-build

if [[ $? -ne 0 ]]; then
echo ">>>>>>>> 编译失败, 需要修复后再进行push"
exit 1
fi

echo ">>>>>>>> 编译成功"
exit 0

然后将该脚本移动到.git/hooks目录下。在编译失败时,会阻止 commit。

参考

Git - Git Hooks

License:  CC BY 4.0