如何在自定义预提交挂钩中 return 状态为“已跳过”?
How to return status `Skipped` in self defined pre-commit hook?
我有一个自定义的预提交挂钩,如果较早的挂钩失败,我想跳过它。如果较早的挂钩失败,则会生成一个名为 pre-commit.log
的日志文件。
A .pre-commit-config.yaml
可能如下所示:
repos:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.2
hooks:
- id: flake8
log_file: pre-commit.log
- repo: local
hooks:
- id: skript
name: skript
entry: bash skript.sh
language: system
log_file: pre-commit.log
我的 bash skript.sh
看起来像这样:
if [ -f "pre-commit.log" ]; then
echo "Error in earlier pre-commit! We skip this script."
echo "See 'pre-commit.log' for detailed information."
exit 1
else
echo "All pre-commits successful."
# some other code
fi
现在我检查“pre-commit.log”是否存在,如果存在,我 return exit 1
。因此,这个钩子的输出是 Failed
。但我更喜欢状态 Skipped
因为没有失败。
我的目标是在控制台或日志文件中看到文本 Skipped
,就像 jupyter-notebook-cleanup
的这张图片一样。
如果我写 exit 0
我得到 Passed
就像 isort
和 black
如果我 return exit 1
或另一个更大的数字我得到 Failed
喜欢 flake8
.
如何获取消息 Skipped
?
无法影响文本 Skipped
Skipped
只出现在以下情况:
- 钩子不是 运行 因为它的 hookid 出现在
SKIP
环境变量中
- 没有文件匹配
files
/ types
/ types_or
并且 pass_filenames
是 true
(默认值)和 always_run
是 false
(默认值)
你最好的选择是 exit 0
在 non-failure 的情况下,这将在输出
中显示为 Passed
免责声明:我编写了您正在使用的pre-commit工具
我有一个自定义的预提交挂钩,如果较早的挂钩失败,我想跳过它。如果较早的挂钩失败,则会生成一个名为 pre-commit.log
的日志文件。
A .pre-commit-config.yaml
可能如下所示:
repos:
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.2
hooks:
- id: flake8
log_file: pre-commit.log
- repo: local
hooks:
- id: skript
name: skript
entry: bash skript.sh
language: system
log_file: pre-commit.log
我的 bash skript.sh
看起来像这样:
if [ -f "pre-commit.log" ]; then
echo "Error in earlier pre-commit! We skip this script."
echo "See 'pre-commit.log' for detailed information."
exit 1
else
echo "All pre-commits successful."
# some other code
fi
现在我检查“pre-commit.log”是否存在,如果存在,我 return exit 1
。因此,这个钩子的输出是 Failed
。但我更喜欢状态 Skipped
因为没有失败。
我的目标是在控制台或日志文件中看到文本 Skipped
,就像 jupyter-notebook-cleanup
的这张图片一样。
如果我写 exit 0
我得到 Passed
就像 isort
和 black
如果我 return exit 1
或另一个更大的数字我得到 Failed
喜欢 flake8
.
如何获取消息 Skipped
?
无法影响文本 Skipped
Skipped
只出现在以下情况:
- 钩子不是 运行 因为它的 hookid 出现在
SKIP
环境变量中 - 没有文件匹配
files
/types
/types_or
并且pass_filenames
是true
(默认值)和always_run
是false
(默认值)
你最好的选择是 exit 0
在 non-failure 的情况下,这将在输出
Passed
免责声明:我编写了您正在使用的pre-commit工具