我使用GuardRspec一起使用;我使用focus: true强制它只运行我正在处理的测试。但有时我忘记删除focus: true,这会分散我未来的自我和同事的注意力。
我想创建一个git钩子来检查spec文件夹,以确保除了focus: true之外的测试文件中没有spec/rails_helper.rb,并将其保存在存储库中。
我读过这个答案,估计有点尴尬。
如何使用钩子来防止基于文件内容的提交?
更新
这是我现在拥有的,但它不起作用,即使没有匹配,git拒绝提交。

FILES_PATTERN='\.rb(\..+)?$'
FORBIDDEN="(\, focus: true|binding\.pry)"
git diff --cached --name-only | egrep "$FILES_PATTERN" | xargs egrep --with-filename -n "$FORBIDDEN" && echo "Commit reject, found $FORBIDDEN reference, please remove" && exit 1
exit 0

最佳答案

一个好的信息来源是git-scm的书。
您需要预提交挂钩。要返回一个非零值(从而中止提交),您需要以下内容:

FILES_PATTERN='\.rb(\..+)?$'
FORBIDDEN='focus: true'
git diff --cached --name-only | \
  grep -spec/ | \
  grep -E $FILES_PATTERN | \
  xargs grep --with-filename -n $FORBIDDEN && echo "COMMIT REJECTED Found '$FORBIDDEN' references. Please remove them before commiting" && exit 1

这是从这个rather good tips site中提出来的。我还没有测试我做的调整。

09-04 18:19
查看更多