从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)。

链接地址: http://www.djcxy.com/p/93181.html

上一篇: exclude Jest snapshots from git whitespace check

下一篇: iOS 10 Safari Issue with <select> element no more in DOM