commit-msg 2.6 KB
# 颜色定义
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 格式验证
# ============================================

# 允许的类型
TYPES="feat|fix|docs|style|refactor|perf|test|chore|revert"

# 允许的范围(常见模块)
SCOPES="material|product|user|auth|api|ui|config|build|ci|release|husky|chore"

# 正则表达式:type(scope): subject
# 示例:feat(material): 添加文档列表分类导航
PATTERN="^($TYPES)(\(($SCOPES)\))?: .{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 "     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 ""