此包已被弃用且不再维护。作者建议使用 https://github.com/BrainMaestro/composer-git-hooks 包。

用于自动将 Git 钩子复制到项目的库

dev-feature/prepare-command 2017-09-26 02:32 UTC

This package is auto-updated.

Last update: 2020-07-22 16:25:55 UTC


README

Build Status Code Climate Test Coverage Packagist

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 的周期性垃圾回收过程之前运行。