felipebool / crook
Crook 是一个简化 Git 钩子处理的简单工具
Requires
- php: ^7.1
- symfony/console: ^4.0
Requires (Dev)
- codacy/coverage: ^1.4
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.2
- vlucas/phpdotenv: ^2.4
README
Crook
首先,Crook 是一个正在开发中的项目。
如果你不熟悉 Git 钩子,你可能需要先阅读 Git 钩子文档。
Crook 是定义和管理 Git 钩子的最简单方式。它的目标是允许在触发 Git 钩子动作时运行 composer.json 中的脚本。
用法
这个项目的目标是尽可能简单,因此,你不需要编写任何 PHP 代码,你只需要从 Packagist 安装任何包,然后使它们在特定的 Git 钩子中运行。具体过程将在以下章节中解释。
安装
只需运行
$ composer require felipebool/crook --dev
初始化 Crook
$ vendor/bin/crook init
将在项目的根目录中创建 crook.json 配置文件和 theHook。
添加新钩子
$ vendor/bin/crook add hook-name action-name
将在 .git/hooks/hook-name 到 theHook 之间创建符号链接,启用该钩子。
移除钩子
$ vendor/bin/crook remove hook-name
将移除 .git/hooks/hook-name 的符号链接,禁用该钩子。
将动作添加到 composer.json
当你使用 add
添加新动作时,你需要在 composer.json 中添加在触发该动作时预期运行的代码。为此,你必须在 scripts
部分创建一个新条目,并定义在那里必须运行的代码。
Crook 配置文件
Crook 使用类似于 composer 的 JSON 配置文件,它称为 crook.json。配置基本上是通过将 Git 钩子名称作为键,将 composer.json 中的相应脚本条目作为值来实现的。请参见以下示例
{ "pre-commit": "code-check", "composer": "/home/felipe/bin/composer" }
尽管你可以自己编辑 crook.json,但你应该使用 $ vendor/bin/crook
来创建符号链接。只有 composer 路径 必须 手动设置。机制将在下一节中解释。
机制
每次你运行 vendor/bin/crook add hook-name action-name
时,Crook 都会从 .git/hooks/hook-name 创建到 /your/project/hook/theHook 的符号链接,就这么简单。
现在,当 Git 触发动作 hook-name 时,它将跟随链接到 /your/project/hook/theHook,然后 Crook 将在项目的 composer.json 中查找名为 action-name 的脚本,并执行那里定义的命令。
在提交前使用 phpcs 添加代码验证
为了检查代码是否符合 PSR2,你必须这样做
在 composer.json 中添加脚本动作
"scripts": {
"code-check": "phpcs --standard=PSR2 src/",
}
初始化 crook
$ vendor/bin/crook init
将代码检查绑定到 pre-commit 钩子
$ vendor/bin/crook add pre-commit code-check
下次你运行 $ git commit -m 'some message'
时,Crook 将运行 code-check 内部的代码,如果检查失败,将阻止代码提交。