问题标签 [pre-commit.com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1727 浏览

git - 如何使用这个 git 预提交钩子

Yelp 检测机密是一个防止机密进入您的代码库的系统。我想安装它提供的预提交钩子

我以前从未使用过 git hooks,但我看到的所有示例文件.git/hooks/都是 bash 中的,而yelp自述文件中给出的示例是 yaml 文件。

它们链接到pre-commit.com;“用于管理和维护多语言预提交挂钩的框架”。

这是否意味着 yelp pre-commit 钩子只能通过首先安装pre-commit框架才能使用?

如果是这样,我有点迷失了预提交的使用。我已经安装了它,我可以调用它。所以在现有的回购中我已经运行了pre-commit install. 但是我现在如何添加 yelp 检测秘密预提交挂钩?

当然,我已经查看了pre-commit.com上的文档,但我有点迷失了。欢迎任何提示。

0 投票
1 回答
760 浏览

git - 使用 python 库“pre-commit”,如何添加一个运行单个 python 文件的 git pre-commit 钩子?

我正在使用这个库来尝试向我的项目添加一个预提交挂钩。需要考虑的内容很多,我认为我想要的预提交检查不需要他们的大多数示例使用的大范围。我想做的就是运行一个 python 文件。根据该文件是否退出/完成而没有问题(IE 没有引发异常)是我想要允许或禁止提交的内容。我做了一个.pre-commit-config.yaml,但我不知道如何让它只运行一个文件。

我基本上希望键入git commit -m "whatever"自动运行python myfile.py<- 并基于此退出代码,允许或阻止提交。关于我的 yaml 应该是什么样子的任何想法?

这是我到目前为止所拥有的:

但我收到以下错误:.An unexpected error has occurred: OSError: [WinError 193] %1 is not a valid Win32 application 我认为因为它期望这个 .py 文件是一个 .exe 或其他东西,即使我设置language为 python ...

0 投票
1 回答
1284 浏览

pre-commit.com - 如何将预提交工具配置为依赖于所有挂钩配置的单个位置?

请注意,这个问题是关于pre-commit.com工具,而不是关于安装 git-hooks。

该工具.pre-commit-config.yml在存储库的根目录中使用一个文件,该文件定义要使用哪些钩子,并且还使用 git 标签固定它们。pinning 很有用,因为它可以避免在释放较新的钩子/linter 时引入随机破损。

如果你有很多存储库(>40)并且你的钩子正在积极开发,这会带来一个新的挑战。在已经采用 pre-commit 工具的 OpenStack 存储库上,这会带来新的维护负担,这是一个重大的负担,尤其是每个补丁在 CI 中花费的平均时间超过 5 小时。

配置预提交以使用 HEAD 也不是一个选项,因为这会经常中断。吨

因此,我想知道是否有另一个设置可以让我拥有一个集中的预提交存储库来定义其配置,并且我可以配置大多数项目来使用它。

如果这是可能的,它会从一个地方撞出短绒。我们可以毫无问题地破坏一些存储库,因为如果我们愿意,我们可以在其他存储库上触发构建,或者我们可以承担风险。

这还有另一个方面,一些 linter 确实需要它们自己的配置文件,比如.ansible-lint,.flake8文件,如果我们也可以将它们保存在一个集中的位置,那就太好了。这方面的问题更大,因为将有许多存储库,我们将被迫更改默认配置。这意味着它唯一可行的方法是仅在没有 in-repo 配置时才使用集中式 linter 配置。

我怎样才能做到这一点?

请注意,任何解决方案都不应改变用户已经 linting(tox -e linters调用pre-commit run -a)的方式。要求用户手动克隆另一个存储库或运行具有某些魔力的 bash 脚本将是一个交易破坏者,因为它会引入另一个需要维护的东西。

背景

0 投票
1 回答
2218 浏览

python - Python预提交单元测试失败

我希望pre-commit在提交代码之前运行测试。
该命令python -m unittest discover在命令行中运行。

但是当我试图提交时,我得到了

这是我的.pre-commit-config.yaml文件。

另外对于我尝试使用的语言system。我得到了同样的结果。

我该如何解决这个问题?请帮忙。

0 投票
1 回答
9564 浏览

python - 如何在预提交挂钩之前运行自定义 shell 脚本文件

在我的 python 项目中,我有 pre-commit-config.YAML 我想在其中创建我的自定义文件。

如果 python lint 错误大于某些数字,则此文件的目的是失败 git commit。以下命令将用于计算行数

有人可以建议一些方法。我是 MAC 和 Python 生态系统的新手?

编辑 sh 文件看起来像这样。

我试过了

但这行不通。

0 投票
0 回答
3250 浏览

git - GitKraken中的Githook预提交错误退出代码1

我正在尝试使用 pre-commit 包和 git 挂钩。

如果我运行 pre-commit,或者如果我提交,从命令行一切运行良好。

但是当我尝试从 GitKraken 提交时,会出现以下错误: 在此处输入图像描述

这里是命令行提交的输出: 在此处输入图像描述 在这里您可以找到涉及的两个文件:

我使用@Anthony Sottile 的猜测解决了这个问题。我使用软件管理器安装了 GitKraken,但似乎无法获取 git config 环境。

为了检查它,我尝试打印脚本的输出,在 gitkraken 中是:

相反,当我从 cli 尝试时,输出是:

所以在那之后我使用命令行重新安装了GitKraken:

问候

0 投票
1 回答
1363 浏览

python - 跳过 Python 预提交单元测试

我想使用pre-commit来处理我的 git 项目的 git 钩子。但是,当我使用它时,该git commit命令会一直跳过unittest执行:

预提交钩子手动执行的结果相同:

我错过了什么?手动执行没问题python -m unittest discover,它执行4个单元测试:

我已经阅读了预提交用户文档和这个答案:

Python预提交单元测试失败

这是我的.pre-commit-config.yaml文件。

我使用miniconda作为环境管理器。这是我的conda list输出:

我使用的操作系统是 MacOS Catalina,版本 10.15.2。


编辑:

安东尼的回答很好;但是,为了将来参考,最好使用以下选项报告我用于运行unittest命令的修改后的配置(这里是关于 test-discovery 的文档--start-directory=path/to/python_module_folder

正如关于钩子中参数模式的预提交文档所报告的那样,附加参数应该是长格式的。

0 投票
0 回答
319 浏览

python - Python 预提交失败但未进行更正

我正在使用一些预提交挂钩并遇到python-import-sorter. 我收到以下错误:

通常没问题,它会根据需要重新排序导入。git diff我用or看到更改,用git status暂存文件,git add -u下一个git commit成功。问题是现在我没有什么新东西可以上台,所以我不能提交任何更改,并且每次提交挂钩都会失败。除了使用git commit -n.

相关导入部分:

0 投票
1 回答
2798 浏览

python - 预提交运行 unittest git hooks: ModuleNotFoundError for installed python module in environment

我使用pre-commit来处理我的 git 项目的 git 钩子。当我使用它时,该pre-commit run -a命令一直跳过测试执行:

直接执行就python -m unittest discover可以了:

直到我在代码中添加了requestspython-dotenv模块导入,该git add . && pre-commit install && pre-commit run -a命令才可以。这是我的实际.pre-commit-config.yaml文件。

我使用miniconda作为环境管理器;这是我的conda list输出:

这是项目文件结构:

什么可能导致这种行为?我如何解决它?

0 投票
2 回答
4898 浏览

mypy - 是否可以运行 mypy pre-commit 而不会失败?

我想为团队添加以下内容以预先提交:

我的团队担心这可能过于严格。为了逐步介绍,我希望这个钩子不会使提交失败,而只是显示问题。那可能吗?