一、 简介
Hook理解为程序特定动作时回调的一个接口,Git中的Hook用于在特定的重要动作发生时,触发脚本。
在开发中,为了规范化提交信息,以便追溯修改和理解修改内容,通常会采用统一的提交信息模板来约束开发人员。因此可以通过配置git,来提升便利性。
二、 关于Git Hook
进入工程的git hook目录
zengyu@MacBook-Pro universezy.github.io % cd .git/hooks
zengyu@MacBook-Pro hooks % ls -a
. post-update.sample pre-rebase.sample
.. pre-applypatch.sample pre-receive.sample
applypatch-msg.sample pre-commit.sample prepare-commit-msg.sample
commit-msg.sample pre-merge-commit.sample update.sample
fsmonitor-watchman.sample pre-push.sample
hooks目录是存放git运行时关键动作执行脚本的地方,sample是默认的示例文件,在init一个git仓库时生成,每一个sample文件对应一个git动作,我们可以参照sample写一个自己的脚本,以去掉sample后缀命名,便可以执行对应的功能。
三、 默认提交信息模板
通过配置一个提交信息的模板,避免每次提交时需要复制粘贴带来的不便。
我们定义一个如下模板:
[Module.SubModule.Tag][feature/bug][Id:000][Desc:example]
[分析]
[方案]
[影响范围]
[测试建议]
[适用范围]
[依赖链接]
满足开发过程中的主要场景:需求(feature)和修复(bug),有工程对应的模块、子模块、标签,id,描述,以及详细内容。
然后保存到hooks目录中(为了仅对当前工程生效,如果想对所有工程生效,需要保存在本地独立目录下,且git config时加上--global
,具体可以阅读参考文献):
zengyu@MacBook-Pro hooks % vim commit-template
zengyu@MacBook-Pro hooks % cat commit-template
[Module.SubModule.Tag][feature/bug][Id:000][Desc:example]
[分析]
[方案]
[影响范围]
[测试建议]
[适用范围]
[依赖链接]