从git空白检查中排除Jest快照
我正在使用git diff-index --check --cached HEAD --
修剪git提交中的空白。 我想使用快照添加Jest测试,但快照文件包含空格,如果我删除它,我的测试总是失败。 所以我想从空格检查中排除*.js.snap
文件。 如何让git从git diff-index
排除*.js.snap
(或者**/__snapshots/*
)文件? 我在OSX上使用bash。
同时,我正在通过将我的提交钩子更改为交互式来解决此问题:
# If there are whitespace errors, print the offending file names and fail.
git diff-index --check --cached HEAD --
if [ $? -ne 0 ]; then
# Allows us to read user input below, assigns stdin to keyboard
exec < /dev/tty
while true; do
echo "Your commit introduces trailing whitespace. Are you sure you want to commit? y/n"
read yn
case $yn in
y ) exit 0;;
n ) exit 1;;
esac
done
fi
Git确实有一种指定排除路径的方法,虽然它没有很好的文档记录,显然也不是很知名。 它被称为pathspec,在这种情况下可以使用如下:
git diff-index --check --cached HEAD -- ':!*.js.snap' .
其中:
是指定pathspec不仅仅是常规路径的特殊字符,而'!' 指定匹配路径其余部分的文件应该从匹配列表中排除。
不像Mercurial的-X
或--exclude
那样简单,但它在那里。
如上所述, git diff-index
的路径参数是由shell解释的全局样式模式。
所以这是一个比git命令问题更多的shell问题。
例如,请参阅“如何在unix / linux shell中进行模式匹配时使用反向或负向通配符?”
您可以尝试并激活shopt extglob
,或者(更简单),对脚本执行后续步骤,查看(使用git status
)任何带有**/__snapshots/*
的完整路径名的已修改文件,并取消其修改( git checkout)。
上一篇: exclude Jest snapshots from git whitespace check
下一篇: iOS 10 Safari Issue with <select> element no more in DOM