这是我的pre-commit
钩子
#!/bin/sh
echo "pre-commit started"
filename="$1"
lineno=0
error() {
echo "$1"
exit 1
}
while read -r line
do
[[ "$line" =~ ^#.* ]] && continue
let lineno+=1
length=${#line}
if [[ $lineno -eq 1 ]]; then
[[ $length -gt 50 ]] && error "Limit the subject line to 50 characters"
[[ ! "$line" =~ ^[A-Z].*$ ]] && error "Capitalise the subject line"
[[ "$line" == *. ]] && error "Do not end the subject line with a period"
fi
[[ $lineno -eq 2 ]] && [[ -n $line ]] && error "Separate subject from body with a blank line"
[[ $lineno -gt 1 ]] && [[ $length -gt 72 ]] && error "Wrap the body at 72 characters"
done < "$filename"
exit 0
运行时出现此错误
› git commit -m "sfrewr"
pre-commit started
/Users/me/.git-templates/hooks/pre-commit: line 28: : No such file or directory
[master 6950a43] sfrewr
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 89
第28
行显示
done < "$filename"
答案 0 :(得分:2)
Git的Object.keys(this)
钩子不接受任何参数,但是您的shell脚本需要一个参数。尝试从空文件名读取时,会看到错误。
由于您似乎正在尝试对提交消息进行理智检查(一个值得称赞的目标),因此您可能想要使用JSON.stringify
钩子。如果您想这样做,它既可以拒绝您的消息也可以对其进行编辑。您可以通过运行pre-commit
了解更多有关哪些钩子做什么的信息。
答案 1 :(得分:0)
我遇到了同样的错误。然后我意识到我在项目文件夹的名称中使用了非英文字符。 :/