Git 挂钩拼写检查器忽略缩进行
Git Hook Spellchecker Ignore Indented Lines
我正在编写一个 git 钩子来拼写检查我的提交消息。这是我目前所拥有的:
#!/bin/sh
ASPELL=$(which aspell)
WORDS=$($ASPELL list < "")
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 我想忽略缩进的行(两个或更多空格)。这将避免有关文件名、注释等的恼人消息。
谢谢!
你有没有参加 EECS 398?
只是在不破坏荣誉密码的情况下给你提示。
将提交消息放入文本文件中。使用文本编辑器从文本文件中删除缩进的行。然后把文本文件通过aspell.
如果其他人遇到这个问题并且不在任何大学 class 原始发帖者所说的,这就是我解决问题的方法:
#!/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 < "")
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
当我们实际调用 aspell
时,关键部分是 --mode=email --add-email-quote='#'
个参数。
--mode
设置 filter 模式,在我们的例子中,我们将其设置为 email
模式。描述为:
The email
filter mode skips over quoted text. ... The option add|rem-email-quote
controls the characters that are considered quote characters, the defaults are '>
' and '|
'.
因此,如果我们将“#
”添加到 "quote" 个字符的列表中,aspell
将跳过它。我们当然使用 --add-email-quote
选项来做到这一点。
请注意,根据文档,我们还跳过了“>
”和“|
”。如果您不想 aspell
跳过这些,请使用 --rem-email-quote
选项。
有关详细信息,请参阅 aspell's man page here。
我正在编写一个 git 钩子来拼写检查我的提交消息。这是我目前所拥有的:
#!/bin/sh
ASPELL=$(which aspell)
WORDS=$($ASPELL list < "")
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 我想忽略缩进的行(两个或更多空格)。这将避免有关文件名、注释等的恼人消息。
谢谢!
你有没有参加 EECS 398?
只是在不破坏荣誉密码的情况下给你提示。
将提交消息放入文本文件中。使用文本编辑器从文本文件中删除缩进的行。然后把文本文件通过aspell.
如果其他人遇到这个问题并且不在任何大学 class 原始发帖者所说的,这就是我解决问题的方法:
#!/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 < "")
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
当我们实际调用 aspell
时,关键部分是 --mode=email --add-email-quote='#'
个参数。
--mode
设置 filter 模式,在我们的例子中,我们将其设置为 email
模式。描述为:
The
add|rem-email-quote
controls the characters that are considered quote characters, the defaults are '>
' and '|
'.
因此,如果我们将“#
”添加到 "quote" 个字符的列表中,aspell
将跳过它。我们当然使用 --add-email-quote
选项来做到这一点。
请注意,根据文档,我们还跳过了“>
”和“|
”。如果您不想 aspell
跳过这些,请使用 --rem-email-quote
选项。
有关详细信息,请参阅 aspell's man page here。