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

Is possible to list the files affected by pre-commit run?

虽然使用 pre-commit 有时我只是想知道文件名将被传递给挂钩,只是为了验证 --from-refto-ref 是正确的。例如,我是 运行:

pre-commit run flake8  --from-ref $(git merge-base master HEAD) --to-ref HEAD

而且我不确定哪些文件传递给了我的 flake8 挂钩,添加 --verbose 没有帮助,因为 flake8 也不会输出文件名。

所以有什么方法可以告诉 pre-commit 只输出文件名列表而不 运行 实际的钩子?

作为一种解决方法,您可以在 .pre-commit-config.yaml 中定义一个新的挂钩 运行s ls

- id: ls
  name: show files
  language: system
  entry: "ls"
  pass_filename: true

那么你可以运行:

git add .pre-commit-config.yaml
git commit # so that the new config takes effect
pre-commit run ls --verbose --from-ref $(git merge-base master HEAD) --to-ref HEAD

您将获得 pre-commit“选择”的文件列表。

pre-commit 为此目的提供了一个特殊的 identity 钩子

您可以通过以下方式配置它:

-   repo: meta
    hooks:
    -   id: identity

或者,如果您只是想弄清楚 --from-ref / --to-ref——您可以使用 git diff A...B --name-only,因为这就是预提交在幕后使用的东西


免责声明:我是预提交的作者