在预提交挂钩中,有没有办法验证结帐文件夹的"state after commit"?



我想在pre-commit钩子中运行静态检查(例如mypy,pylint)。我目前天真的方法(只是在pre-commit钩子中运行这些检查)给了我假阴性和假阳性,因为非阶段的更改和未跟踪的文件。

所以我实际上想要做的是轻松地创建提交,通过隐藏未分级和未跟踪的本地更改来清理工作区,然后运行测试。

当然,我可以为这个做一个别名,以便使事情更容易,但这样我就不允许直接git commit了(我也不得不共享git配置文件)。

我也可以使用pre-commit钩子,但我没有看到允许git commit -m"foo" file1 file2的方法(即提供文件名而不是在之前进行所有更改)。

是否有一种预期的(甚至是内置的)方法来检查"提交后的状态",不包括本地修改(未跟踪和未分级);这对

有效
git commit -m"foo" file1 file2

提交钩子编写器的责任是查询索引而不是沙箱中的文件。这些都是可行的,但有些棘手。幸运的是,这些都是以前做过的。

Python模块预提交将为你保存未分段的更改,运行你在配置文件中请求的所有钩子,然后在之后弹出保存。

裁判:https://pre-commit.com/

如果你正在使用Node,那么用JS编写的一个很好的替代方案是Husky。它实现了许多Git钩子,可以很容易地集成到任何Node项目中。

裁判:https://typicode.github.io/husky

您可以在任何语言的项目中使用这些工具中的任何一个,但最容易匹配语言,因为预提交可以在您的requirements.dev.txt中,而在package.json中可以使用husky,因此它们可以与开发环境的其余部分一起安装,并且具有最小的额外依赖。

最新更新