wtyd/githooks

以简单而巧妙的方式管理 Git Hooks。

v2.6.0 2024-05-10 11:35 UTC

README

PHP Versions Supported

1. Wtyd/GitHooks

有许多其他工具和 Composer 插件用于管理 Git Hooks。但 GitHooks 提供了

  • 独立应用程序。GitHooks 是一个二进制文件(.phar),因此它的依赖项不会与您的应用程序的依赖项冲突。
  • 通过 Composer 管理。您不需要其他工具,如 Phive 或其他工具。
  • 集中管理所有 QA 工具配置(至少所有受支持的工具)。
  • 它通过使用仅 githooks 工具名称 命令来抽象开发者如何执行 QA 工具。
  • 您还可以创建自己的脚本并配置任何 Git Hook。

此外,如果您有混合项目,它还可以与像 typicode/husky 这样的 JavaScript 验证工具一起使用。

2. 要求

  • PHP >= 7.1
  • 您需要检查代码的工具。
  • 或您自己的钩子脚本。

3. 安装

1. GitHooks 必须像开发依赖项一样通过 Composer 安装

composer require --dev wtyd/githooks

注意:对于 php < 8.1,您必须在您的 composer.json 中的 scripts 部分添加以下 post-update-cmd 事件

"scripts": {
    "post-update-cmd": [
      "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions"
    ]
}

然后运行 composer update wtyd/githooks

版本 2.3.0 之前使用的方法是 php72orMinorUpdate,但它已被弃用,并将在版本 3.0.0 中删除

也可以方便地将其添加到 post-install-cmd 事件中,这样项目的其他开发者就不会在构建时遇到问题

"scripts": {
    "post-update-cmd": "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions",
    "post-install-cmd": "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions"
}

2. 安装所有需要的 受支持的工具。您如何安装工具并不重要。

3. 使用 githooks conf:init 初始化 GitHooks。此命令在根路径中创建配置文件(githooks.yml)。

4. 运行 githooks hook。它将启动 GitHooks 的预提交事件的脚本复制到 .git/hooks 目录。您也可以运行 githooks hook otherHook MyScriptFile.php 以设置任何带有自定义脚本的钩子。有关更多信息,请参阅 wiki

为确保自动配置,我们可以配置 composer.json 文件的 post-update-cmdpost-install-cmd 事件中的命令(scripts 部分)

"scripts": {
    "post-update-cmd": [
    "vendor/bin/githooks hook" // or "vendor/bin/githooks hook pre-commit MyScriptFile.php"
    ],
    "post-install-cmd": [
    "vendor/bin/githooks hook"
    ]
}

5. 设置配置文件

4. 使用方法

当您提交时,所有配置的代码检查工具都会自动启动。如果您的代码通过了所有检查,GitHooks 允许您提交。如果没有,您必须修复代码并再次尝试。

Imagen todo OK

Imagen con KO

您还可以随时运行 GitHooks。同时运行所有工具或逐个运行。

githooks tool all # Run all tools
githooks tool phpcs # Run only phpcs

Imagen de una herramienta

5. 受支持的工具

目前,受支持的工具包括

但您可以在任何 Git Hook 上设置自己的脚本。

6. 设置配置文件

githooks.yml 文件分为三个部分

6.1. 选项

6.1.1. 执行

execution 标志表示 GitHooks 将如何运行

  • full(默认选项):始终对所有工具针对每个工具设置的路径执行。例如,您将 phpcs 设置为在 srcapp 目录中运行。提交只包含来自 database 目录的修改文件。即使这些目录中没有文件被修改,Phpcs 也会检查 srcapp 目录。
  • fast:此选项仅对提交中修改的文件运行工具。
    • 此选项仅影响以下工具:phpcs、phpmd、phpstan 和 parallel-lint。其余工具将以完整选项运行。
    • 警告!!! 您必须在 githooks.yml 或每个工具的配置文件中设置工具的排除项,因为此选项覆盖了工具的 paths 键,以便它们仅对修改的文件执行。

6.1.2. 进程

同时以多个进程运行多个工具(tool all 命令)。默认进程数为 1。

6.2. 工具

这是一个包含 GitHooks 将运行的工具名称的数组。工具的名称是它们的可执行文件。如果想要执行所有工具,则 Tools 键如下所示

Tools:
    - phpstan
    - security-checker
    - parallel-lint
    - phpcs
    - phpcbf
    - phpmd
    - phpcpd

工具的顺序是它们将被执行的顺序。

6.3. 设置工具

在下一步中,您必须使用与 Tools 键中相同的名称配置工具。例如,为设置 phpcs

phpcs:
    executablePath: vendor/bin/phpcs
    paths: [src, tests]
    ignore: [vendor]
    standard: 'PSR12'

所有可用选项都在wiki中。

7. 贡献

非常感谢他人的贡献!发送 pull request/issue。在 Contributing 的 Wiki 部分检查所有步骤。谢谢!

8. 许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件