refactor: 重写 Git hooks 体系,委托已有检查、新增模板与 LFS 校验
pre-commit 代码检查改为委托 _backend-lint / _versionctl-lint / _frontend-check,新增 LFS 指针校验;commit-msg 新增多行空行格式校验和模板注释忽略,移除 CJK/Python 字符集检测;新增 prepare-commit-msg 提交信息模板;hooks-install 增加 source 文件存在性校验;前端 check 补入 tsc -b 类型检查并修复暴露的类型错误
This commit is contained in:
@@ -8,7 +8,33 @@ if [ ! -f "$MSG_FILE" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
IFS= read -r FIRST_LINE < "$MSG_FILE" || FIRST_LINE=
|
||||
FIRST_LINE=
|
||||
SECOND_LINE=
|
||||
HAS_BODY=
|
||||
LINE_NO=0
|
||||
|
||||
while IFS= read -r LINE || [ -n "$LINE" ]; do
|
||||
case "$LINE" in
|
||||
\#*) continue ;;
|
||||
esac
|
||||
|
||||
if [ -z "$FIRST_LINE" ]; then
|
||||
[ -n "$LINE" ] || continue
|
||||
FIRST_LINE=$LINE
|
||||
LINE_NO=1
|
||||
continue
|
||||
fi
|
||||
|
||||
LINE_NO=$((LINE_NO + 1))
|
||||
case "$LINE_NO" in
|
||||
2) SECOND_LINE=$LINE ;;
|
||||
*)
|
||||
if [ -n "$LINE" ]; then
|
||||
HAS_BODY=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done < "$MSG_FILE"
|
||||
|
||||
case "$FIRST_LINE" in
|
||||
Merge*)
|
||||
@@ -31,12 +57,11 @@ 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
|
||||
|
||||
if [ -n "$HAS_BODY" ] && [ -n "$SECOND_LINE" ]; then
|
||||
printf '%s\n' '提交信息首行后应为空行,再写详细描述。' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user