• 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/bash
    
    echo  "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内的命令,效果如下:

    搞定!


    __EOF__

  • 本文作者: JoeyHua
  • 本文链接: https://www.cnblogs.com/joeyhua/p/16667048.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    技术保证质量,软件测试的这些测试方法你都掌握了吗?
    flink读取mongodb数据源
    js创建一个按钮添加到body中,设置宽度100px,高度30px,按钮文字一键登录,并为其添加点击事件
    常见的C语言类型转换
    蓝牙资讯|2023年Q2中国可穿戴市场同比增长17%,蓝牙可穿戴发展迅猛
    input()函数——输入
    Scrapy爬虫框架实战
    Vue3函数式编程
    微信小程序:EventChannel实现页面间事件通信通道
    【网络工程】3、交换机原理
  • 原文地址:https://www.cnblogs.com/joeyhua/p/16667048.html