Project Icon

whisky

轻量级 Git 钩子管理工具 助力团队代码质量把控

Whisky 是一个框架无关的命令行工具,专门用于管理和执行 PHP 项目的 Git 钩子。该工具通过简单的 JSON 配置文件,允许开发团队统一设置 pre-commit 和 pre-push 等钩子,实现代码自动格式化和测试。Whisky 支持全局和项目级安装,适用于各种规模的开发团队,有效确保代码质量标准的一致性。

Whisky 标志

Whisky 终端示例

Packagist 上的最新版本 GitHub 测试操作状态 GitHub 代码风格操作状态 GitHub 静态分析操作状态 总下载量

简介

Whisky 是最简单的、框架无关的 CLI 工具,用于管理和执行整个团队的 PHP 项目 git 钩子。

Git 钩子是确保进入版本控制的代码满足组织代码质量标准的绝佳工具。然而,.git/hooks 并不包含在 git 树中。这使得让所有项目贡献者使用相同的检查和相同的设置变得不切实际。

安装

Whisky 的唯一依赖是 php^8.1

你可以通过 composer 安装该包:

composer require --dev projektgopher/whisky
./vendor/bin/whisky install

这是推荐的方法,因为项目中的每个开发者都将可以使用该工具。

全局安装

Whisky 可以全局安装,但这意味着如果项目中的任何开发者想要使用它,他们也需要全局安装。

composer global require projektgopher/whisky
whisky install

如果 Whisky 在项目中同时全局和本地安装,运行的版本将取决于如何调用命令。

使用方法

install 命令将在项目根目录创建一个 whisky.json 文件:

// whisky.json
{
  "disabled": [],
  "hooks": {
    "pre-commit": [
      "./vendor/bin/pint --dirty"
    ],
    "pre-push": [
      "php artisan test"
    ]
  }
}

有关支持的 git 钩子的完整列表,请参阅 Git 文档

警告 所有钩子都会按原样在终端中执行。在提交涉及 whisky.json 更改的内容时请记住这一点。

whisky.json 文件中添加或删除任何钩子(而不是单个命令)后,应该执行 ./vendor/bin/whisky update 以确保这些更改反映在你的 .git/hooks 目录中。

自动更新钩子

虽然我们建议将 Whisky 作为一个"选择加入"的工具,但通过添加几个 Composer 脚本,我们可以确保所有项目贡献者使用一致的 git 钩子。这将强制项目中的每个人使用 Whisky:

// composer.json
// ...  
  "scripts": {
    "post-install-cmd": [
      "whisky update"
    ],
    "post-update-cmd": [
      "whisky update"
    ]
  }
// ...

跳过钩子

有时你需要在不运行 git 钩子的情况下提交或推送更改, 比如当你要将工作转移到另一台计算机时。这通常可以通过使用 git 的原生 --no-verify 标志来完成。

git commit -m "wip" --no-verify

然而,某些 git 操作不支持此标志,比如 git merge --continue。 在这种情况下,运行以下命令将产生完全相同的效果。

./vendor/bin/whisky skip-once

注意 通过在你的 bash.rc 文件中添加 alias whisky=./vendor/bin/whisky,你可以缩短此命令的长度。

禁用钩子

将钩子的名称添加到 whisky.json 中的 disabled 数组中将禁用该钩子的运行。 这在构建尚未准备好供团队其他成员使用的工作流时很有用。

高级用法

对于比简单终端命令更复杂的操作,建议在项目根目录创建一个 scripts 目录。这还有一个额外的好处,即允许你运行用任何语言编写的脚本。

// whisky.json
// ...
  "pre-push": [
    "composer lint",
    "rustc ./scripts/complicated_thing.rs"
  ]
// ...

注意 在执行此操作时,请确保引用的任何脚本都是可执行的:

chmod +x ./scripts/*

测试

# 运行测试套件
composer test

# 无需进行虚拟提交即可测试钩子
git hook run pre-commit

故障排除

如果你同时在本地全局安装了 Whisky,并且你的钩子被运行了两次,请尝试从其中一个安装中卸载 Whisky 的钩子。

# 移除全局 Whisky 钩子,保留本地钩子,
# 同时保留项目根目录中的 `whisky.json`。
whisky uninstall -n

贡献

注意 在贡献时不要构建二进制文件。二进制文件将在发布标记时构建。

请查看 CONTRIBUTING 以获取更多详细信息。

安全漏洞

请查看我们的安全策略,了解如何报告安全漏洞。

致谢

非常感谢 EXACTsports 对本包开发的支持。

许可证

MIT 许可证 (MIT)。请查看 许可证文件 以获取更多信息。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号