我经常提交import pdb; pdb.set_trace().
有阻止我这样做的便捷方法吗?
我用emacs / git(magit).
解决方法:
为了完整起见,以下是检查索引中版本内容的方法,该版本以eugene’s answer为基础并进行了一些其他更改(未作为完整的钩子进行测试,但应该可以使用):
#!/bin/sh
has_import=false
git diff --cached --no-renames --name-status --diff-filter=AM |
while read st file; do
case "$file" in
*.py)
if git show ":$file" |
grep -E "^[^#]*\bimport[[:space:]]+pdb\b"; then
echo "$file: has import pdb"
exit 1
fi;;
esac
done || has_import=true
if $has_import; then
exit 1
fi
最重要的更改是git show“:$file”技巧,该技巧使用git show从索引中提取暂存版本.
我也:
>添加-不重命名以使重命名的文件显示为已添加(使用R进行处理比较困难,不妨将它们视为新文件);
>删除了C,因为它在触发时将失败(因为也打印了“其他”文件名,就像重命名一样,但我认为它无论如何都不会触发);
>通过使用case删除了一些bash特定的语法;和
>增强grep表达式(它仍然不是完美的,您可以通过pdb import …来完成,或者更可能是它不会捕获的类似import collections pdb的东西;但是现在它在导入后可以处理多个空格,并避免对例如import pdbase造成错误的点击.
>根据Matthieu Moy’s comment,加强外壳程序片段以设置has_import变量,您可以稍后使用. (如果您以后不打算使用任何东西,可以按照他的建议消除该变量,并直接在其中使用出口1.)
(这仍然至少存在一个小缺陷:提取的文件内容没有应用任何污迹过滤器.但是,如果您的污迹和干净过滤器添加和删除了导入行,我怀疑没有任何预提交钩子可以帮助您.:-))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。