#!/usr/bin/env bash # pre-commit hook:检测到核心业务文件改动时自动跑核心业务测试。 # 安装方法:./scripts/install-hooks.sh set -e REPO_ROOT="$(git rev-parse --show-toplevel)" cd "$REPO_ROOT" # 1) 拿到本次 commit 要包含的改动文件(已 staged) STAGED=$(git diff --cached --name-only --diff-filter=ACMR) if [ -z "$STAGED" ]; then exit 0 fi # 2) 检查是否涉及核心业务文件 CORE_PATTERN='(^|/)book-generator(/|$)|book-generator-api\.ts$|schema\.prisma$' CORE_HIT=$(echo "$STAGED" | grep -E "$CORE_PATTERN" || true) if [ -z "$CORE_HIT" ]; then echo "[pre-commit] 未检测到核心业务改动($STAGED),跳过核心业务测试。" exit 0 fi echo "[pre-commit] 检测到核心业务改动:" echo "$CORE_HIT" | sed 's/^/ - /' echo # 3) 跑核心业务测试(best-effort:服务已起就直接跑,否则自动启) if [ -x "./scripts/run-core-business-test.sh" ]; then ./scripts/run-core-business-test.sh else echo "[pre-commit] 缺少 ./scripts/run-core-business-test.sh,跳过测试。" echo " 请阅读 CONTRIBUTING.md 后再提交。" exit 1 fi