kostandinvllahu / composer-git-hooks
轻松管理您的composer配置中的git钩子
This package is auto-updated.
Last update: 2024-09-27 09:50:56 UTC
README
在您的composer配置中轻松管理git钩子。这个命令行工具使得在项目范围内一致地使用git钩子变得简单。在composer文件中指定钩子可以使项目团队的所有成员都能使用它们。这为每个人提供了一个一致的环境和行为,这是非常好的。您还可以用它来全局管理计算机上每个仓库的git钩子。这样,您就有了一个可靠的钩子集合,这些钩子是为您选择的每个项目定制的。
安装
将一个hooks
部分添加到您的composer.json
文件的extra
部分,并将钩子添加到其中。
{ "extra": { "hooks": { "pre-commit": [ "echo committing as $(git config user.name)", "php-cs-fixer fix ." // fix style ], // verify commit message. ex: ABC-123: Fix everything "commit-msg": "grep -q '[A-Z]+-[0-9]+.*' $1", "pre-push": [ "php-cs-fixer fix --dry-run ." // check style "phpunit" ], "post-merge": "composer install" "...": "..." } } }
然后使用以下命令进行安装:
composer require --dev brainmaestro/composer-git-hooks
这将在您的vendor/bin
文件夹中安装cghooks
二进制文件。如果该文件夹不在您的路径中,您需要在每个命令前加上vendor/bin/
。
注意:在v3版本中不再支持在composer.json
的scripts
或hooks
根部分中声明的钩子。
全局支持
您还可以全局安装它。当使用新增的全局git钩子管理功能时,cghooks
感觉更自然。
composer global require --dev brainmaestro/composer-git-hooks
所有命令都有全局支持(除了测试钩子。仍然需要位于包含composer.json
文件的目录中)。
可选配置
失败时停止
当钩子是一系列命令时,当命令失败时停止执行可能很有用。
在stop-on-failure
配置部分中指定受影响的钩子。
{ "extra": { "hooks": { "config": { "stop-on-failure": ["pre-push"] }, "pre-push": [ "php-cs-fixer fix --dry-run --stop-on-violation .", "phpunit" ], } } }
请务必在更改stop-on-failure
配置部分后运行更新命令。
自定义钩子
可以在`config`部分的`custom-hooks`数组中添加自定义钩子。
{ "extra": { "hooks": { "config": { "custom-hooks": ["pre-flow-feature-start"] }, "pre-flow-feature-start": [ "echo 'Starting a new feature...'" ] } } }
请务必在更改`custom-hooks`配置部分后运行更新命令。注意:config
不是有效的自定义钩子值。
快捷方式
将cghooks
脚本添加到您的composer.json
文件的scripts
部分。这样,可以使用composer cghooks ${command}
运行命令。如果您不想编辑系统路径,这是理想的。
{ "scripts": { "cghooks": "vendor/bin/cghooks", "...": "..." } }
Composer事件
将以下事件添加到您的composer.json
文件。每当事件发生时,都会运行cghooks
命令。有关Composer事件系统的更多详细信息,请参阅Composer命令事件。
{ "scripts": { "post-install-cmd": "cghooks add --ignore-lock", "post-update-cmd": "cghooks update", "...": "..." } }
使用方法
以下所有命令都必须在包含您的composer.json
文件的同一文件夹中运行,或者通过指定--git-dir
选项来指向包含composer.json
文件的文件夹。
添加钩子
安装完成后,运行cghooks add
来添加在composer配置中指定的所有有效的git钩子。
lock
文件包含已添加的所有钩子的列表。
如果使用--global
标志,则钩子将被全局添加,并且全局git配置也将被修改。如果没有提供目录,将回退到全局配置中的当前core.hooksPath
。如果没有设置该值,则默认为$COMPOSER_HOME
(此特定回退仅发生在add
命令中)。如果回退后仍然没有路径,将报错。
更新钩子
使用cghooks update
命令执行更新操作时,基本上会忽略锁文件并尝试从composer文件中添加钩子。这与add
命令的--force
选项的功能类似。如果自首次添加钩子以来composer.json
文件中的钩子已经更改,此命令非常有用。
当与--global
选项一起使用时,它的工作方式类似,但如果没有提供目录,则不会回退到$COMPOSER_HOME
。
移除钩子
可以使用cghooks remove
轻松移除钩子。这将移除在composer配置中指定的所有钩子。
也可以通过传递参数来移除钩子。命令cghooks remove pre-commit post-commit
将移除pre-commit
和post-commit
钩子。
小心:如果锁文件被篡改或使用了强制选项,则在使用此包之前已存在但已在composer脚本配置中指定的钩子也将被移除。也就是说,如果您之前有一个pre-commit
钩子,但您的当前composer配置也有一个pre-commit
钩子,此选项将导致命令移除您的初始钩子。
当使用--global
选项并且没有提供目录时,也不会回退到$COMPOSER_HOME
。
列出钩子
可以使用cghooks list-hooks
命令列出钩子。这基本上检查composer配置并列出具有文件的钩子。
常见选项
以下选项适用于所有命令。
每个命令还有一个-v
标志来控制详细日志的详细程度。目前仅支持一个级别。
测试钩子
在添加钩子之前,可以使用cghooks ${hook}
测试钩子。例如,cghooks pre-commit
运行pre-commit
钩子。
贡献
有关详细信息,请参阅CONTRIBUTING。
致谢
相关
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。