我可以从每个预提交挂钩中排除文件而不重复自己吗?

Can I exclude files from every pre-commit hook except for one without repeating myself?

我想创建一个 Git 回购协议,REUSE compliant. I want to use the reuse pre-commit hook to help ensure that I’m compliant. The REUSE Specification 要求我创建一个名为“LICENSES”的文件夹,其中包含我的项目使用的每个许可证。我正在使用其他几个挂钩,我不希望这些挂钩检查或修改 LICENSES/ 文件夹中的任何内容。我希望除了重用之外的每个钩子都排除 LICENSES/。 (旁注:目前,重用挂钩似乎不受排除 LICENSES/ 的影响,但应该可以修复)。到目前为止,这是我尝试过的方法:

exclude: '^LICENSES/'
repos:
    -
        repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v4.0.1
        hooks:
            - id: check-case-conflict
            - id: end-of-file-fixer
            - id: mixed-line-ending
            - id: trailing-whitespace
    # I’m using identity instead of reuse here for testing and to better
    # illustrate the problem.
    -
        repo: meta
        hooks:
            -
                id: identity
                exclude: "^$"

那没用。看起来除了全局模式之外,每个钩子排除模式也适用。我希望应用每个挂钩排除模式而不是全局模式。

我可以在每个挂钩上使用每个挂钩排除模式,除了一个:

repos:
    -
        repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v4.0.1
        hooks:
            -
                id: check-case-conflict
                exclude: &exclude_pattern '^LICENSES/'
            -
                id: end-of-file-fixer
                exclude: *exclude_pattern
            -
                id: mixed-line-ending
                exclude: *exclude_pattern
            -
                id: trailing-whitespace
                exclude: *exclude_pattern
    # I’m using identity instead of reuse here for testing and to better
    # illustrate the problem.
    -
        repo: meta
        hooks:
            - id: identity

但是,我会重复自己的话。我认为我可以使用合并键减少重复自己,但是 I don’t think that those are supported。有什么避免重复或少重复的方法吗?

没有在每个挂钩上指定 exclude,正如您所发现的那样

顶层exclude是快捷方式applied to all hooks

我建议只将 exclude 添加到 修改 LICENSES

的挂钩

免责声明:我创建了预提交