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文件夹下。

钩子实现库

git钩子存放位置

1.使用前需修改几处代码:

代码风格校验钩子

模块增量检查钩子

message规则校验钩子

post-commit

pre-commit

commit-msg

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
2
3
4
5
<type>(<scope>): <short summary>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
1
2
3
4
5
6
feat(function module): add multiple new functions to the function library

1.add new function of obtaining the specified region according to the specific region.
2.add new function of clearing variable within robot operation.
3.optimize code of function of `vague_match`

注:
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**