stevegrunwell / smee
dev-feature/prepare-command
2017-09-26 02:32 UTC
Requires
- sebastian/diff: ^2.0
- symfony/console: ^3.3
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^6.3
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2020-07-22 16:25:55 UTC
README
Smee 是一个 Composer 包,旨在使共享 Git 钩子 更加容易。
为什么需要 Git 钩子?
Git 钩子 是在 Git 生命周期中不同点自动执行操作的有用方式。这些操作可能包括验证编码标准、运行单元测试、强制提交消息格式等。
Git 钩子的缺点是它们与 Git 仓库不一起分发,这意味着很难确保项目中的所有开发人员都使用相同的钩子。
Smee 通过引入 .githooks
目录并提供在 composer install
上自动安装钩子的简单方法,旨在改变这一点。
安装
应通过 Composer 将 Smee 添加到您的项目中
$ composer require --dev stevegrunwell/smee
为确保 Smee 可自动为其他用户运行,请将 Smee 添加到 "post-install-cmd" Composer 事件
{ "scripts": { "post-install-cmd": [ "smee install" ] } }
最后,在项目的根目录中创建一个 .githooks
目录,并将您想要在项目中使用的钩子添加到该目录。这些文件应提交到 git 仓库,并在其他开发人员下一次运行 composer install
时自动复制到他们的本地仓库。
可用的 Git 钩子
Git 支持多种钩子,每个钩子在生命周期中不同的点触发。每个 Git 钩子都存在于一个单独的文件中,其名称与相应的钩子对应(例如,.git/hooks/pre-commit
将在 "pre-commit" 钩子上执行)。
提交工作流程
以下是一些最常见的 Git 钩子,在开发人员尝试提交代码的不同点触发
- pre-commit
- 在创建提交消息之前运行。
- prepare-commit-msg
- 在打开提交消息编辑器之前但创建默认消息之后运行。
- commit-msg
- 在保存提交消息之前运行,通常用于验证提交消息格式。
- post-commit
- 在提交后运行。此钩子通常用于通知。
电子邮件工作流程
Git 也通过 git am
支持基于电子邮件的工作流程,它按顺序从邮箱应用补丁。如果您使用此工作流程,还有一些额外的钩子可用。
其他有用的客户端 Git 钩子
- pre-rebase
- 在允许任何代码被变基之前运行。
- post-rewrite
- 在重写提交后运行,例如
git commit --amend
。 - post-checkout
- 在成功的
git checkout
命令之后运行。 - post-merge
- 在成功的
git merge
命令之后运行。 - pre-push
- 在
git push
命令之前运行。 - pre-auto-gc
- 在 Git 的周期性垃圾回收过程之前运行。