问题标签 [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 回答
512 浏览

pre-commit.com - pre-commit-config.yaml 中的 args 是否会覆盖 pre-commit-hooks.yaml 中的 args?

我们在 pre-commit-hooks.yaml 文件中指定了一些“参数”。

如果现在在 pre-commit-config.yaml 中还指定了“args”,这些是添加到默认值还是覆盖默认值?

从官方文档中我不清楚会发生什么!

谢谢

0 投票
2 回答
877 浏览

python - Git pre-commit 获取所有 Python 文件

我想在提交时运行黑色以格式化所有暂存的 .py 文件。不幸的是,由于雇主网络 VPN 和限制,我无法使用pre-commit包,因为它在尝试加载 repo 时超时。

所以我决定编写自己的预提交钩子。目前我有这个

我从 Atlassian 找到的第一部分。第二部分需要某种过滤器,以仅从 diff-index 返回的列中获取 .py 文件。如何仅从列表中获取 .py 文件?

另外:我对 git hooks 很陌生。这是我和我的同事确保所有代码都用黑色格式化的可靠方法吗?

0 投票
1 回答
825 浏览

python - 如何使用 brew 并为 Python 3.6.8 安装 precommit

我想使用brew 为 python 3.6.8 安装预提交。我正在使用 macOS Catalina(版本 10.15.7)

brew install pre-commit用来做安装。

我遇到了问题,因为我的预提交使用 Python 3.9,我想避免这种情况(即让 brew 预提交使用 python 3.6)。

当我尝试时brew install pre-commit,我发现会自动看到该消息Downloading https://homebrew.bintray.com/bottles/python%403.9-3.9.0_2.catalina.bottle.tar.gz

我所在的环境是python 3.6.8。(python -V返回python 3.6.8)。

还,

我也有,python 3.9(python@3.9),(虽然它不是活动环境)在/usr/local/Cellar. 我也有一个pre-commit里面的文件夹/usr/local/Cellar。内部子文件夹中的一些路径/usr/local/Cellar/pre-commit链接到 python 3.9。以下是相同的示例。

的第一行/usr/local/bin/pre-commit是:

#!/usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python

我已经尝试过以下方法:

  • 将 Python 环境更改为 Python 3.6。此处未解决问题(使用 python 3.9 预提交的符号链接)
  • 删除缓存 ( rm -r /Users/username/.cache/pre-commit)。这里也发生了同样的事情(python 3.9 的预提交符号链接仍然存在)。
  • 再次安装预提交(rm -r /usr/local/Cellar/pre-commit后跟brew install pre-commit)。这里也发生了同样的事情(使用 python 3.9 预提交的符号链接)。
  • 使用下面显示的方法删除和重新调整符号链接。

在这里,我收到以下错误/usr/local/Cellar/pre-commit/2.9.0/libexec/bin/python3: No module named pre_commit

我可以使用 brew 安装预提交以使其使用 python 3.6 而不是 python 3.9 的最佳方式是什么?

我看到了这个 brew precommit page。看起来brew install pre-commit自动总是使用 python 3.9.0。

任何帮助将不胜感激。

0 投票
1 回答
1960 浏览

git - 带有 git pre-commit 钩子的 CalledProcessError

我遇到了安装预提交钩子的障碍。根据下面的错误,钩子安装在目录中找不到python exe C:\\Users\\dangler\\.cache\\pre-commit\\repoith5dg7x\\py_env-default\\Scripts\\python.EXE(该文件夹中不存在python.EXE......应该吗?)。在过去的几个小时里,我一直在尝试解决它,但无济于事。希望存在解决方案,也许我已经为它搜索了不正确的地方。

.pre-commit-config.yml文件是这样的:

0 投票
1 回答
861 浏览

django - 预提交挂钩以检查 django 迁移

我正在尝试为我的 Django 项目编写一个预提交挂钩,以检查丢失的迁移。也就是说,它确保所有更改都反映在迁移文件中。

makemigrations实现这一点的一种方法是,如果命令没有返回任何更改,则通过预提交挂钩。

如果它返回一些东西,则使 pre-commit 钩子失败:

我该如何编写这个预提交钩子?有比使用更好的方法makemigrations吗?这是我到目前为止所拥有的,但它总是通过(我认为我需要解析响应):

0 投票
2 回答
597 浏览

pre-commit-hook - 是否可以列出受预提交运行影响的文件?

在使用预提交时,有时我只想知道文件名将被传递给钩子,只是为了验证它是正确的--from-refto-ref例如,我正在运行:

而且我不确定传递给我的flake8钩子的文件是什么,添加--verbose也无济于事,因为flake8也不会输出文件名。

那么有没有办法告诉pre-commit只输出文件名列表而不运行实际的钩子?

0 投票
1 回答
643 浏览

python - 如何使用 pydocstyle 的 match-dir 标志过滤目录?

当进行新的 git 提交时,我想使用pydocstyle作为预提交挂钩来检查项目的源代码文档字符串,即位于/src文件夹中的 .py 文件。为了只检查src文件夹,我使用了match-dir选项,但是,它似乎不起作用,并且存在一个打开的GitHub 问题

按照关于 pre-commit hook usage 的 pydocstyle 文档,我将 pydocstyle 添加到.pre-commit-config.yaml文件中,如下所示:

从这里我尝试了两种方法来配置match-dir选项:作为命令行参数,以及在配置文件中。为了match-dir作为命令行参数传递,我在.pre-commit-config.yaml中使用了args键,如下所示:

对于配置文件方法,我在项目的根目录下创建了一个.pydocstyle文件,内容如下:

这两种方法似乎对运行预提交时检查的目录没有影响,并且 pydocstyle 检查项目中的所有文件。对此的任何帮助将不胜感激!

0 投票
0 回答
221 浏览

git - VSCode 在预提交挂钩失败后重新暂存暂存文件以再次提交

我有一个 Django 项目,其中包含几个使用 Python 工具的预提交钩子pre-commit,配置如下:

通常,当由于终端上的预提交挂钩而导致提交失败时,我会执行以下操作:

我想从 VSCode 获得相同的行为。

vscode的git面板

我暂存我的更改,编写提交消息并提交。VSCode 自然会失败。

vscode 提交失败

无论我在 VSCode 上提交多少次,它都不会“暂存” blackand所做的自动更改end-of-file-fixer。因此,当我再次单击时,我希望 VSCode 再次添加文件,因为它们的内容已更新。我怎样才能做到这一点?

提前致谢。


环境

  • VSCode 1.52.1
  • 吉特 2.25.1
  • 预提交 2.9.3

如果相关:

  • 库本图 20.04.1
  • 蟒蛇 3.8
0 投票
1 回答
870 浏览

python - 带有 .toml 配置和预提交钩子的 Flakehell

我正在尝试将 flakehell 作为预提交挂钩运行。

我的 .pre-commit-config.yaml:

pyproject.toml:

还是有一些问题。当我尝试使用 git commit 时,我看到 flakehell 开始工作。几秒钟后它失败了,我得到了错误:

“UnicodeDecodeError:‘utf-8’编解码器无法解码位置 10 中的字节 0xb8:无效的起始字节”

没有“预提交”它会很好用(我的意思是当我输入“flakehell lint”时)

甚至可以将 flakehell 配置为预提交吗?

如果没有 - 您是否为 python 项目推荐任何更好/有效的解决方案?

0 投票
1 回答
505 浏览

python - Pylint 不会忽略迁移

我使用 Pylint 并通过预提交挂钩运行它。它不会忽略我的迁移文件夹。我应该在配置中添加什么?

和文件.pylintrc