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

r - 如何将 R styleR 与 pre-commit 和 renv 一起使用

我已经用 rvenv 创建了一个虚拟环境,所以我现在rvenv/在我的项目根目录中。我还安装了styler,并希望有一个预提交挂钩,将其应用于 R 代码。

从这里:https ://github.com/lorenzwalthert/precommit/blob/master/.pre-commit-hooks.yaml如下:

我对应该给予的路径感到困惑entry:,在这个片段中,它是通往全球版本的路径styler(或者至少,我假设如此)。但我希望能够使用我在我假设的虚拟环境中安装的版本。

我的问题是 - 如何去做。如果我不应该使用安装在其中的版本,renv/那么我很高兴听到(并使用)任何最佳实践,即围绕创建可在我的和其他系统上运行的 R 文件样式的预提交挂钩。

编辑

按照下面的答案,我还必须安装 docopt (如此处所述)。

0 投票
1 回答
1770 浏览

python - 使用预提交,如何在提交之前使用一些钩子,在推送之前使用其他钩子

有些钩子可能需要一段时间才能运行,我想在推送之前运行它们,但不是在每次特定提交之前运行(例如,pylint 可能有点慢)。

我看过以下内容:

但目前还不清楚我应该如何设置它。

这是我尝试过的:

从那我期待前几个钩子在提交之前运行(他们这样做),但我期待黑色在推送之前运行,但事实并非如此。

为了测试我创建了以下文件:

这肯定不是被黑色格式化的。

0 投票
0 回答
38 浏览

git - 将钩子安装为 pre-push 而不是 pre-commit

pre-commit-config.yaml我在位于我的存储库根目录的文件中定义了一个预提交挂钩,如下所示-

如果我现在遵循 flake8 规则,这将按预期工作并阻止任何提交。但是,我想为 agit push而不是为 a这样做git commit。我发现的一种方法是在里面添加一个pre-push文件并从里面.git/hooks/做。flake8 .这可以完成工作,但现在我无法通过 git 与任何人共享该文件,因为该.git文件夹未被 git 跟踪。

是否有任何文件/配置可以放在 repo 的根目录中作为预推送挂钩?

0 投票
1 回答
359 浏览

azure-devops - 使用 `git commit —no-verify` 进行预提交 azure 管道

我看到我可以将预提交与管道一起使用,有没有办法为 azure 管道设置 yaml 文件,以便git commit --no-verify在特定情况下失败时使用?或者有没有办法在问题发生时对管道进行故障排除?

这就是我的 yaml 文件

0 投票
2 回答
2577 浏览

git - 带有预提交的 Pylint 和带有 husky 的 EsLlint

我有一个项目,前端是 JS,后端是 Python。前端已经配置了 husky 预提交钩子。今天我已经用预提交库配置了 Pylint,但是 husky 钩子已经被那个动作覆盖了。是否可以结合 pre-commit 和 husky 库?如果不是...解决问题的最佳方法是什么?

0 投票
2 回答
5994 浏览

python - 运行 pytest 作为预提交钩子 // 没有这样的文件或目录问题

在我的 Python 项目中,我将pytest其用作pre-commit挂钩。一些测试创建和删除临时文件,当我运行pytest <test directory>. 但是,当我运行git commitpre-commit挂钩触发器时pytest,一些测试会因为FileNotFoundError: [Errno 2] No such file or directory: '<file name>'. 我的印象是当许多文件已更改并位于暂存区域时会发生这种情况(对于 1-2 个文件,我没有观察到此问题)。这是我的pytest部分.pre-commit-config.yaml

输出如下所示:

当我从控制台运行 pytest 时,这不会发生。

并且错误不再出现pass_filenames: falsealways_run: true

关于在 bash 中包装东西,我仍在这样做pylint

有没有更好的解决方案?pylint不支持无限深度的递归,因此我需要一个 bash 命令。

谢谢!

最好的,阿列克谢

0 投票
2 回答
821 浏览

continuous-integration - 本地挂钩的预提交给出错误:“无法识别的参数:.pre-commit-config.yaml”

pre-commit我在文件中有以下回购.pre-commit-config.yaml

但它一直给我错误:

错误:无法识别的参数:.pre-commit-config.yaml

因为它将文件名作为参数传递给我的 python 脚本。我怎样才能防止这种情况?

0 投票
2 回答
284 浏览

javascript - 预提交 + python + react (js)

我使用预提交,我想将它与 .py 文件一起使用,我重新格式化文件黑色模块,但我也有一个 web 文件夹,其中反应文件,我一次有 2 个问题,与重新格式化代码有什么关系对于 js 以及如何联合起来,以便在启动预提交运行时检查 web 文件夹以重新格式化 js 代码

UPDATE: 最让我担心的问题是js和py文件冲突,但是我用过:

0 投票
1 回答
4897 浏览

python - zsh:找不到命令:预提交但已安装包

在 VSCode 中使用以下命令成功安装了 pre-commit:

但是当我尝试进行预提交安装时,我收到错误消息:

0 投票
3 回答
858 浏览

prettier - Prettier 使用 pre-commit(.com) 不会重新进行更改

我开始使用 Prettier + eslint 使用pretty-quick& husky选项 2)。它的行为符合预期,即在提交(或修改)期间重新格式化代码并在提交中包含更改。

我的 monorepo 需要(几个)更多的预提交钩子,所以我最终迁移到了pre-commit.com(选项 3)。现在,当我提交或修改时,Prettier 会修改文件并返回Failed状态。这造成了一个相当烦人的工作流程,我被迫添加文件并尝试再次提交更改。

作为提交的一部分,是否有某种方法可以将更改重新分阶段?