Git Hook Spellchecker忽略缩进线

时间:2016-02-03 15:22:52

标签: git hook ignore aspell

我正在编写一个git钩子,拼写检查我的提交消息。这就是我到目前为止所做的:

#!/bin/sh

ASPELL=$(which aspell)

WORDS=$($ASPELL list < "$1")

if [ -n "$WORDS" ]; then
    echo -e "Possible spelling errors found in commit message. Consider using git commit --amend to change the message.\n\tPossible mispelled words: " $WORDS
fi

我不知道怎么告诉aspell我想忽略缩进的行(两个或多个空格)。这将避免有关文件名,注释等的恼人消息。

谢谢!

2 个答案:

答案 0 :(得分:5)

你是否有机会参加EECS 398?

在不破坏荣誉代码的情况下给你一个提示。

将提交消息放入文本文件中。使用文本编辑器从文本文件中删除缩进行。然后将文本文件放入aspell。

答案 1 :(得分:1)

如果有其他人遇到这个并且不是原始海报所讨论的大学课程,那么我是如何解决这个问题的:

#!/bin/bash
ASPELL=$(which aspell)
if [ $? -ne 0 ]; then
    echo "Aspell not installed - unable to check spelling" >&2
    exit
else
    WORDS=$($ASPELL --mode=email --add-email-quote='#' list < "$1")
fi
if [ -n "$WORDS" ]; then
    printf "\e[1;33m  Possible spelling errors found in commit message.\n  Possible mispelled words: \n\e[0m\e[0;31m%s\n\e[0m\e[1;33m  Use git commit --amend to change the message.\e[0m\n\n" "$WORDS" >&2
fi

当我们实际调用--mode=email --add-email-quote='#'时,关键部分是aspell个参数。

--mode设置filter模式,在我们的示例中,我们将其设置为email模式。其描述如下:

  

email过滤器模式会跳过引用的文字。 ...选项add|rem-email-quote控制被视为引号字符的字符,默认值为&#39; >&#39;和&#39; |&#39;。

所以,如果我们添加&#39; #&#39;到那个&#34;引用&#34;的列表字符aspell将跳过它。我们当然使用--add-email-quote选项。

请注意,我们也会跳过&#39; >&#39;和文档中的&#39; |&#39;如果您不希望aspell跳过这些内容,请使用--rem-email-quote选项。

有关详细信息,请参阅aspell's man page here