是否可以列出受预提交 运行 影响的文件?
Is possible to list the files affected by pre-commit run?
虽然使用 pre-commit 有时我只是想知道文件名将被传递给挂钩,只是为了验证 --from-ref
和 to-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
,因为这就是预提交在幕后使用的东西
免责声明:我是预提交的作者
虽然使用 pre-commit 有时我只是想知道文件名将被传递给挂钩,只是为了验证 --from-ref
和 to-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
,因为这就是预提交在幕后使用的东西
免责声明:我是预提交的作者