feat: 原生 Git hooks 方案,增强版本升迁工作流
This commit is contained in:
42
scripts/git-hooks/commit-msg
Executable file
42
scripts/git-hooks/commit-msg
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user