..

git hooks

今天在看jaeger的前端代码的时候,发现本地git commit之后会自动执行前端的测试用例。然后知道git本地有hooks这个文件夹,里面可以添加好几种hook,只要按照制定的文件写,并且加上可以执行文件,加上对于的SheBang,就能执行hook。在本地git仓库的.git/hooks/文件中,我编写了一个hook文件,pre-push,这个是在push代码之前触发的。

#!/bin/sh

echo "我要push代码了"

编写了这个文件以后,记得chmod u+x pre-push,让当前用户具有执行这个脚本的权限,注意:这里写的是bash脚本,但是它并没有约束只能使用bash,你也可以使用Python或者perl,awk,node…等等语言来编写,只要加上对于的SheBang就可以。

hellojukay@deepin:~/Data/Code/Linux$ git push origin master
我要push代码了
对象计数中: 3, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 258 bytes | 0 bytes/s, 完成.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:hellojukay/linux-c.git
   7be5e01..d0a1a40  master -> master

push 一下代码,我的hook触发了。其他类型的hook也是同意的道理,这里也就不在赘述了。

2020年10月27日补充

git 还有 2 种配置全局 hook 目录的方式:

# git 2.9+
git config --global core.hooksPath /path/to/my/centralized/hooks
$GIT_DIR/hooks

参考链接: