我用Guard用Rspec; 我用focus: true它来强制它只运行我正在进行的测试.但有时我会忘记删除focus: true,这会让我未来的自我和与之合作的人分心.
我想创建一个git钩子来检查spec文件夹,以确保focus: true除了测试文件之外没有,spec/rails_helper.rb并将其保存在Repository中.
我已经阅读了这个答案将git钩子放入存储库,猜测它必须有点尴尬.
如何使用钩子来阻止基于文件内容的提交?
更新
这是我现在拥有的,但它不起作用,即使没有匹配,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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这是从这个相当不错的提示网站上取消的.我没有测试过我做的调整.
在现有答案的基础上,这是我正在使用的支持多个字符串的版本。
#!/bin/sh
declare -a arr=("This is the first string." "This is the second string.")
for i in "${arr[@]}"
do
git diff --cached --name-only | xargs grep --with-filename -n $i && echo "COMMIT REJECTED! Found '$i' references. Please remove them before commiting." && exit 1
done
exit 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2437 次 |
| 最近记录: |