问题标签 [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.
pre-commit.com - pre-commit-config.yaml 中的 args 是否会覆盖 pre-commit-hooks.yaml 中的 args?
我们在 pre-commit-hooks.yaml 文件中指定了一些“参数”。
如果现在在 pre-commit-config.yaml 中还指定了“args”,这些是添加到默认值还是覆盖默认值?
从官方文档中我不清楚会发生什么!
谢谢
python - Git pre-commit 获取所有 Python 文件
我想在提交时运行黑色以格式化所有暂存的 .py 文件。不幸的是,由于雇主网络 VPN 和限制,我无法使用pre-commit包,因为它在尝试加载 repo 时超时。
所以我决定编写自己的预提交钩子。目前我有这个
我从 Atlassian 找到的第一部分。第二部分需要某种过滤器,以仅从 diff-index 返回的列中获取 .py 文件。如何仅从列表中获取 .py 文件?
另外:我对 git hooks 很陌生。这是我和我的同事确保所有代码都用黑色格式化的可靠方法吗?
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。
任何帮助将不胜感激。
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
文件是这样的:
django - 预提交挂钩以检查 django 迁移
我正在尝试为我的 Django 项目编写一个预提交挂钩,以检查丢失的迁移。也就是说,它确保所有更改都反映在迁移文件中。
makemigrations
实现这一点的一种方法是,如果命令没有返回任何更改,则通过预提交挂钩。
如果它返回一些东西,则使 pre-commit 钩子失败:
我该如何编写这个预提交钩子?有比使用更好的方法makemigrations
吗?这是我到目前为止所拥有的,但它总是通过(我认为我需要解析响应):
pre-commit-hook - 是否可以列出受预提交运行影响的文件?
在使用预提交时,有时我只想知道文件名将被传递给钩子,只是为了验证它是正确的--from-ref
。to-ref
例如,我正在运行:
而且我不确定传递给我的flake8
钩子的文件是什么,添加--verbose
也无济于事,因为flake8
也不会输出文件名。
那么有没有办法告诉pre-commit
只输出文件名列表而不运行实际的钩子?
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 检查项目中的所有文件。对此的任何帮助将不胜感激!
git - VSCode 在预提交挂钩失败后重新暂存暂存文件以再次提交
我有一个 Django 项目,其中包含几个使用 Python 工具的预提交钩子pre-commit
,配置如下:
通常,当由于终端上的预提交挂钩而导致提交失败时,我会执行以下操作:
我想从 VSCode 获得相同的行为。
我暂存我的更改,编写提交消息并提交。VSCode 自然会失败。
无论我在 VSCode 上提交多少次,它都不会“暂存” black
and所做的自动更改end-of-file-fixer
。因此,当我再次单击时,我希望 VSCode 再次添加文件,因为它们的内容已更新。我怎样才能做到这一点?
提前致谢。
环境
- VSCode 1.52.1
- 吉特 2.25.1
- 预提交 2.9.3
如果相关:
- 库本图 20.04.1
- 蟒蛇 3.8
python - 带有 .toml 配置和预提交钩子的 Flakehell
我正在尝试将 flakehell 作为预提交挂钩运行。
我的 .pre-commit-config.yaml:
pyproject.toml:
还是有一些问题。当我尝试使用 git commit 时,我看到 flakehell 开始工作。几秒钟后它失败了,我得到了错误:
“UnicodeDecodeError:‘utf-8’编解码器无法解码位置 10 中的字节 0xb8:无效的起始字节”
没有“预提交”它会很好用(我的意思是当我输入“flakehell lint”时)
甚至可以将 flakehell 配置为预提交吗?
如果没有 - 您是否为 python 项目推荐任何更好/有效的解决方案?
python - Pylint 不会忽略迁移
我使用 Pylint 并通过预提交挂钩运行它。它不会忽略我的迁移文件夹。我应该在配置中添加什么?
和文件.pylintrc: