commit-msg
2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 获取 commit message
COMMIT_MSG_FILE=$1
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")
echo ""
echo "📝 ${BLUE}检查 Commit Message 格式...${NC}"
echo ""
# ============================================
# Commit Message 格式验证
# ============================================
# 允许的类型(使用 | 分隔而不是 |)
ALLOWED_TYPES="feat|fix|docs|style|refactor|perf|test|chore|revert"
# 允许的范围(常见模块)
ALLOWED_SCOPES="material|product|plan|user|auth|api|ui|config|build|ci|release|husky|chore"
# 检查格式 - 使用简单的正则
PATTERN="^([a-z]+)\\(([a-z]+\\))?: .{1,50}"
# 检查格式
if ! echo "$COMMIT_MSG" | grep -qE "$PATTERN"; then
echo ""
echo " ${RED}❌ Commit Message 格式不正确${NC}"
echo ""
echo " ${BLUE}正确格式:${NC}"
echo " <type>(<scope>): <subject>"
echo ""
echo " ${BLUE}示例:${NC}"
echo " feat(material): 添加文档列表分类导航"
echo " fix(auth): 修复登录状态判断问题"
echo " docs(readme): 更新项目说明文档"
echo ""
echo " ${BLUE}类型 (type):${NC}"
echo " feat - 新功能"
echo " fix - Bug 修复"
echo " docs - 文档更新"
echo " style - 代码格式(不影响功能)"
echo " refactor - 重构(不是新功能也不是修复)"
echo " perf - 性能优化"
echo " test - 测试相关"
echo " chore - 构建/工具链相关"
echo " revert - 回滚提交"
echo ""
echo " ${BLUE}范围 (scope):${NC}"
echo " material - 资料/文档模块"
echo " product - 产品模块"
echo " plan - 计划书模块"
echo " user - 用户模块"
echo " auth - 认证模块"
echo " api - API 接口"
echo " ui - UI 组件"
echo " config - 配置文件"
echo " build - 构建相关"
echo " ci - CI/CD 相关"
echo " release - 发布相关"
echo ""
echo " ${BLUE}主题 (subject):${NC}"
echo " - 简短描述(不超过 50 字符)"
echo " - 使用中文"
echo " - 不以句号结尾"
echo " - 使用祈使句(如 '添加' 而非 '添加了')"
echo ""
echo " ${BLUE}完整示例:${NC}"
echo " feat(material): 添加文档列表分类导航"
echo " "
echo " - 创建分类列表页面"
echo " - 更新首页网格导航"
echo " - 集成 fileListAPI 接口"
echo " "
echo " Closes #123"
echo ""
exit 1
fi
echo " ${GREEN}✅ Commit Message 格式正确${NC}"
echo ""