| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/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
|