我经常提交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.)
(这仍然至少存在一个小缺陷:提取的文件内容没有应用任何污迹过滤器.但是,如果您的污迹和干净过滤器添加和删除了导入行,我怀疑没有任何预提交钩子可以帮助您.:-))