githooks在业务中的使用

博客 分享
0 210
优雅殿下
优雅殿下 2022-09-07 20:04:12
悬赏:0 积分 收藏

git hooks在业务中的使用

起因

最近公司项目发生了一起线上事故,最后排查下来是配置文件的问题。项目里application.yml文件内会用@build.time@记录打包时的时间,但是这个写法是build-helper-maven-plugin提供的(maven本身的写法有时差问题),但是用这种写法的话,项目运行时会报错,因为idea运行不经过maven打包的步骤。

公司内部一般是在@build.time@两边加引号来解决这个问题,提交的时候再去掉,但是提交时可能会忘记去掉,然后就造成了线上事故。

解决方法

可以使用git hooks提供的钩子在提交代码前检查是否有更改@build.time@,如果更改了就中止提交。

git hooks提供了很多钩子供开发者使用,具体的可以参考官网https://git-scm.com/docs/githooks,这里我们使用pre-commit钩子。做法如下:

首先,进入项目根目录下的.git/hooks文件夹下,在这个目录下可以看到很多的示例文件。

applypatch-msg.sample*commit-msg.sample*post-update.sample*pre-applypatch.sample*pre-commit.sample*prepare-commit-msg.sample*pre-push.sample*pre-rebase.sample*pre-receive.sample*update.sample*

然后创建一个pre-commit文件,注意这里不要加后缀,在文件内填入以下内容:

#!/bin/bashecho  "code check running..."for FILE in `git diff --name-only --cached`; do    grep -E \'@build.time@\'\|\"@build.time@\" $FILE 2>&1 >/dev/null    if [ $? -eq 0 ]; then        echo $FILE '修改了build-time,请调整后重新commit'        exit 1    fi    done

这端代码的流程就是先获取改动的文件,然后遍历文件内容,如果文件内查到了关键词,就中止提交并提示。

之后执行git commit前就会自动执行pre-commit内的命令,效果如下:

搞定!

posted @ 2022-09-07 19:40 JoeyHua 阅读(13) 评论(1) 编辑 收藏 举报
回帖
    优雅殿下

    优雅殿下 (王者 段位)

    2018 积分 (2)粉丝 (47)源码

    小小码农,大大世界

     

    温馨提示

    亦奇源码

    最新会员