使用GIT钩子自动生成提交注释


使用GIT钩子自动生成提交注释

步骤

  1. 在GIT仓库的.git/hooks目录下创建prepare-commit-msg文件
  2. 向文件中添加如下代码:
    bash
    #!/bin/sh
    COMMIT_MSG_FILE=$1
    COMMIT_SOURCE=$2

    获取最近一次git add的注释或解析diff信息

msg=...

输出到提交注释文件

echo "$msg" > $COMMIT_MSG_FILE
  1. 设置文件为可执行:

    bash
    chmod +x .git/hooks/prepare-commit-msg
  2. 禁止GIT的权限提示:

    bash
    git config --global advice.ignoredHook false
  3. 提交代码,会自动生成注释

注意点

  1. 确认默认shell,提供对应命令(如zsh)
  2. 可以获取最近git add的注释,也可以解析git diff生成详细注释
  3. 如果解析diff,需要在代码中标记接口等,如//[api]
  4. 文件必须有执行权限,否则GIT会忽略钩子
  5. 可以设置为多语言注释,提高易读性
  6. 必须禁止GIT的ignoredHook提示,否则会出现warning
  7. 提交前不需要自己输入注释,会自动生成
  8. 定制化钩子可以大大提高开发效率,值得运用
  9. 可以根据实践不断完善和增强定制钩子
  10. 请提出使用问题和反馈,不断修复BUG和提高

解析git diff生成提交注释

步骤

  1. 在prepare-commit-msg文件中,获取git diff结果:

    bash
    diff=$(git diff --cached)
  2. 解析diff,提取添加/删除/修改的接口、方法等信息:

    bash
    added=$(echo "$diff" | grep '^+    ' | grep '\[api\]')  
    removed=$(echo "$diff" | grep '^-    ' | grep '\[api\]')   
    modified=$(echo "$diff" | grep '^\+.*\[api\].*$' | grep '\-[api\]')
  3. 根据解析结果生成详细注释:

    bash
    if [ "$added" != "" ]; then
    msg="Add API: $added"  
    elif [ "$removed" != "" ]; then
    msg="Remove API: $removed"  
    elif [ "$modified" != "" ]; then
    msg="Modify API: $modified"
    else
    msg="Update files"   
    fi
  4. 输出生成的注释:

    bash
    echo "$msg" > $COMMIT_MSG_FILE
  5. 提交代码,会自动生成详细注释

注意点

  1. 需要在代码中标记接口、方法等,如//[api]
  2. 不同语言有不同的标记方式,如Go使用//[api]
  3. 提交时保留标记,否则无法解析生成详细注释
  4. 详细注释会标明添加/删除/修改的接口、方法名称等
  5. 其他步骤同上,如设置执行权限、禁用提示等
  6. 定制化变得更加强大,但也需要更多标记维护
  7. 灵活运用,根据需要选择获取最近git add注释或解析diff

文章作者: hypo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hypo !
评论
 上一篇
Go语言进阶--简单的理解操作符 Go语言进阶--简单的理解操作符
程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算就是直接对整数在内存中的二进制位进行操作.
2023-10-19
下一篇 
Go语言进阶——rwmutex的实现机制 Go语言进阶——rwmutex的实现机制
前面我们聊了互斥锁Mutex,所谓读写锁RWMutex,完整的表述应该是读写互斥锁,可以说是Mutex的一个改进版,在某些场景下可以发挥更加灵活的控制能力
2022-10-28
  目录