如何禁用文件特定行的某些预提交挂钩?

How to disable certain pre-commit hooks around specific lines of a file?

gitignore/Global/macOS.gitignore里面,有两个\r\r,如下图所示:

我使用 pre-commit==v4.0.1 及其 mixed-line-endingtrailing-whitespace 挂钩。两者都在这条线上触发。

如何在我的 .gitignore 文件中本地禁用这些挂钩?

我目前采用的解决方案是 exclude: .gitignore 在我的 .pre-commit-config.yaml 中用于两个挂钩。但是,我不喜欢这样,因为它忽略了这些挂钩的整个 .gitignore 文件,而我真的只想在本地禁用 .gitignore.[= 的第 6 - 8 行周围的这两个挂钩。 21=]

没有你想要的选项

pre-commit 框架 对文件进行操作 所以最好的办法是利用 exclude:

    -   id: trailing-whitespace
        exclude: ^\.gitignore$

或者更实际一点,只需删除 Icon\r 行,因为它不太可能被击中(仅当您在 macOS 上为文件夹自定义图标时才会出现)。另一种选择是使用 Icon? 来代替——它的精确度稍差,但您可能不太可能将其他东西与它匹配


免责声明:我创建了 pre-commitpre-commit-hooks

另一种方法是避免在 pre-commit.com 设置中配置任何内容,并确保 .gitignore 仅首先使用 \n 签出。

为此,请尝试 add in a .gitattributes,与 .gitignore:

在同一文件夹中
*.gitignore eol=lf