我正在编写一个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我想忽略缩进的行(两个或多个空格)。这将避免有关文件名,注释等的恼人消息。
谢谢!
答案 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
模式。其描述如下:
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。