pygrep预提交钩子检查字符串是否存在
如果我想编写一个预提交钩子来检查,例如,字符串“我爱预提交”不在我的源代码中,我可以这样做pygrep预提交钩子检查字符串是否存在,grep,pre-commit,pre-commit.com,Grep,Pre Commit,Pre Commit.com,如果我想编写一个预提交钩子来检查,例如,字符串“我爱预提交”不在我的源代码中,我可以这样做 - repo: local hooks: - id: love_statement name: Check that I love pre-commit isn't in source code types: [python] entry: 'I love pre-commit' language: pygrep 但是,如果我想做相反的事情,也
- repo: local
hooks:
- id: love_statement
name: Check that I love pre-commit isn't in source code
types: [python]
entry: 'I love pre-commit'
language: pygrep
但是,如果我想做相反的事情,也就是检查每个源代码文件中是否都有“我喜欢预提交”,该怎么办?我如何修改我的钩子,以便在找到“我爱预提交”时不失败,而在没有找到“我爱预提交”时失败
现在,这可以用
args: [--negate]
您可以使用以下几种方法来执行此操作:
回购协议:
-回购协议:本地
挂钩:
-id:love_声明
名称:检查源代码中是否有“我爱预提交”
类型:[python]
args:[--多行]
条目:'\A((?!我喜欢预提交)。*\Z'
语言:pygrep
这包括以下内容:
- 使用来自
- 使用
将args:[--multiline]
推入整个文件匹配模式pygrep
- 从
和^
(每线锚定)切换到$
和\A
(整线锚定)\Z
$ git ls-files -- '*.py' | xargs tail -n999
==> t.py <==
print('I do not love pre-commit')
==> t2.py <==
print('I love pre-commit')
$ pre-commit run --all-files
Check that I love pre-commit is in source code...........................Failed
- hook id: love_statement
- exit code: 1
t.py:1:print('I do not love pre-commit')
$git ls文件--'*.py'| xargs tail-n999
==>t.py t2.py您可以使用以下方法:
回购协议:
-回购协议:本地
挂钩:
-id:love_声明
名称:检查源代码中是否有“我爱预提交”
类型:[python]
args:[--多行]
条目:'\A((?!我喜欢预提交)。*\Z'
语言:pygrep
这包括以下内容:
- 使用来自
- 使用
将args:[--multiline]
推入整个文件匹配模式pygrep
- 从
和^
(每线锚定)切换到$
和\A
(整线锚定)\Z
$ git ls-files -- '*.py' | xargs tail -n999
==> t.py <==
print('I do not love pre-commit')
==> t2.py <==
print('I love pre-commit')
$ pre-commit run --all-files
Check that I love pre-commit is in source code...........................Failed
- hook id: love_statement
- exit code: 1
t.py:1:print('I do not love pre-commit')
$git ls文件--'*.py'| xargs tail-n999
==>t.py t2.py“免责声明:我是pre-commit的作者”看起来奉承是一个很好的策略:)谢谢!我发现这个解决方案很慢,即使它可以工作-是否有一个选项可以反转pygrep的退出代码?如果没有,你会接受拉请求来添加它吗?没有,否则我会建议这样做。如果你能展示一个真实的使用案例,你可以考虑使用PR“免责声明:我是pre-commit的作者”看起来奉承是一个很好的策略:)谢谢!我发现这个解决方案很慢,即使它可以工作-是否有一个选项可以反转pygrep的退出代码?如果没有,你会接受拉请求来添加它吗?没有,否则我会建议这样做。如果您能够演示PR的真实用例,则可以考虑PR