pre-commit:git 预提交 hook 框架
Git钩子脚本有助于在将代码提交审查前发现一些简单问题。每次提交代码时,我们都会运行这些钩子,自动找出代码里诸如缺少分号、行末多余空格以及调试语句等问题。在代码审查前把这些问题指出来,这样一来,负责审查代码的人员就能把精力集中在代码变更的架构上,不用在一些无关紧要的风格问题上浪费时间。
随着我们创建的库和项目越来越多,我们发现,在各个项目间共享预提交钩子相当麻烦。我们得在不同项目间复制粘贴那些冗长复杂的bash脚本,还得手动调整这些钩子,让它们适应不同项目的结构。
我们觉得,大家应该一直使用业内最优秀的代码检查工具。有些很棒的代码检查工具,是用你项目中不会用到、或者你电脑上没装的语言编写的。比如说,scss - lint就是一个用Ruby编写、针对SCSS的代码检查工具。要是你用node开发项目,应该能直接把scss - lint当作预提交钩子来用,不用在项目里添加Gemfile,也不用知道怎么安装scss - lint。
为了解决钩子相关的问题,我们开发了pre-commit。它是一款适用于预提交钩子的多语言包管理器。你只要列出想要的钩子,pre-commit就会在每次提交前,负责安装并运行各种语言编写的钩子。pre-commit专门设计成无需root权限就能使用。要是开发团队里有人没装node,却修改了JavaScript文件,pre-commit会自动下载并搭建node环境,运行eslint,而且不需要root权限。
https://github.com/pre-commit/pre-commit
https://pre-commit.com/