43 lines
907 B
Bash
Executable File
43 lines
907 B
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
MSG_FILE=$1
|
|
|
|
if [ ! -f "$MSG_FILE" ]; then
|
|
printf '%s\n' '提交信息文件不存在。' >&2
|
|
exit 1
|
|
fi
|
|
|
|
IFS= read -r FIRST_LINE < "$MSG_FILE" || FIRST_LINE=
|
|
|
|
case "$FIRST_LINE" in
|
|
Merge*)
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
if ! printf '%s\n' "$FIRST_LINE" | grep -Eq '^(feat|fix|refactor|docs|style|test|chore): .+$'; then
|
|
cat >&2 <<'EOF'
|
|
提交信息格式错误。
|
|
|
|
格式: <类型>: <简短描述>
|
|
类型: feat / fix / refactor / docs / style / test / chore
|
|
|
|
示例:
|
|
feat: 添加供应商批量管理功能
|
|
fix: 修复流式响应断连问题
|
|
chore: 版本升迁 v0.2.0
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
DESCRIPTION=${FIRST_LINE#*: }
|
|
if printf '%s\n' "$DESCRIPTION" | LC_ALL=C grep -Eq '^[ -~]+$'; then
|
|
printf '%s\n' '提交描述需使用中文。' >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ${#FIRST_LINE} -gt 72 ]; then
|
|
printf '%s\n' '警告: 提交信息首行超过 72 个字符,建议保持简短。' >&2
|
|
fi
|