1

在使用预提交时,有时我只想知道文件名将被传递给钩子,只是为了验证它是正确的--from-refto-ref例如,我正在运行:

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

而且我不确定传递给我的flake8钩子的文件是什么,添加--verbose也无济于事,因为flake8也不会输出文件名。

那么有没有办法告诉pre-commit只输出文件名列表而不运行实际的钩子?

4

2 回答 2

2

预提交identity为此目的提供了一个特殊的钩子

您可以通过执行以下操作对其进行配置:

-   repo: meta
    hooks:
    -   id: identity

或者,如果您只是想弄清楚--from-ref/ --to-ref- 您可以使用git diff A...B --name-only它,因为这是 pre-commit 在幕后使用的


免责声明:我是 pre-commit 的作者

于 2020-12-15T16:53:27.457 回答
0

作为一种解决方法,您可以在.pre-commit-config.yaml运行中定义一个新钩子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

于 2020-12-15T13:21:37.523 回答