团队内部编码风格不一致,代码规范性不足,相信这会是很多小团队刚成型时遭遇的窘境,那么如何破局,如何在代码提交环节,保证大多数人代码风格一致呢?
今天我们就要从git常用的几个钩子函数来讲起,逐步深入。
什么是Git钩子?
Git钩子是一组脚本,这些脚本对应着Git仓库中的特定事件,每一次事件发生时,钩子会被触发。
常用的Git钩子有哪些?
Pre-Commit
每一次执行git commit
命令时,在要求填入提交信息或者生成提交对象之前,pre-commit
脚本会被触发执行。可以利用这个钩子检查即将要提交的仓库快照。
Prepare Commit Message
执行完成pre-commit
钩子脚本之后会触发prepare-commit-msg
钩子,它会弹出含有提交信息的文本编辑器。在这一步可以用来修改squash
或者merge
命令自动生成的提交信息。
如果开发团队使用问题跟踪软件来管理需求和缺陷,比如
Jira
,BugZilla
,Redmine
等,通常惯例是为每一个issue
指定一个独立分支。如果团队规约中规定分支名需要包含issue
id,你可以定制prepare-commit-msg
自动把issue id填写到提交信息中。(可参考借鉴,如何管理团队的编码规范)
Commit Message
commit-msg
与prepare-commit-msg
很像,但它是在用户输入了提交信息之后触发执行的。如果需要警告开发者的提交信息不符合团队规范,此时是一个合适的时机。
Post-Commit
post-commit
钩子总会在commit-msg
钩子之后立即执行。它不能修改git commit
操作本身,所以主要用于消息通知。
有可能你想在
post-commit
中触发一次持续集成,不过大多数情况下这一流程是通过post-receive
钩子触发的。这个钩子在服务器上执行而不是本地机器。每一次远程服务器收到开发者推送的代码都会触发这个钩子。因此这个钩子更加适合执行持续及集成的任务。
======今天有点累,明天继续