Python项目中Git的hook的使用指南
Python项目使用git钩子的指南:
一、钩子介绍:
目前我已为当前项目增加三个git钩子,以Python + shell形式实现。分别为format_check.py + pre-commit.sh检验代码风格的钩子,inspect_modules + post-commit.sh模块增量检查钩子, message_check + commit-msg.sh commit的message规则校验钩子。
- 代码风格校验钩子:通用钩子,目的规整统一项目开发过程中代码风格,遵循标准的pep8风格校验,会在每次git commit 前进行校验,符合规则的将commit成功,反之取消这次commit。
- 模块增量检查钩子: 用于Python项目的钩子,专为检测Python依赖包在开发过程中的迭代变化,会在每次git commit 完成后进行依赖包的增量检测,若当前新增包或者包的版本发生改变,则为当前的开发者在根目录下的package生成专门的文件夹,其中包含所有增量依赖包的源码文件,依赖包树形结构JSON文件,依赖包扁平化结构JSON文件。生成之后会自动git add 该文件夹, 而后git commit 和 git push 该文件夹需要自行执行。
- message规则校验钩子: 通用钩子,遵循Angular提交规范,目的是规范项目合作开发中commit提交的信息,书写良好的commit message可以提高代码维护的效率,同时方便的阅读历史提交记录,能够自动生成change Log。
二、 钩子使用:
钩子文件存储位置位于项目根目录下的git_hook文件夹和.git/hooks文件夹下。
1.使用前需修改几处代码:
2.修改完成后,将post-commit、pre-commit和commit-msg复制到.git/hooks文件夹下,方可。
三、注意事项:
1.钩子函数的编写默认认为开发者使用的是虚拟环境,若开发者未使用虚拟环境,则需分别将post-commit和pre-commit中source $VIRTUAL_PATH
代码注释掉。
2.对于代码风格校验钩子,如果想要跳过钩子检测,则执行git commit指令 后追加 --no-verify
即可。
3.commit的message信息例子:
1 |
|
1 |
|
注:
type的类型为以下之一
- feat:一项新功能
- fix:一个错误修复
- docs:仅文档更改
- style:不会影响代码含义的更改(空格,格式,缺少分号等)
- refactor:既不修正错误也不增加功能的代码更改
- perf:代码更改可提高性能
- test:添加缺失的测试或更正现有的测试
- build:影响构建系统,CI 配置或外部依赖项的更改(比如:gulp,npm)
- chore:其他不会修改 src 或测试文件的更改(比如文档修改,构建流程)
- release:发布版本提交
Angular的message规范文档:https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit
GitHub仓库:https://github.com/syz247179876/git-hooks**
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!