#!/usr/bin/env bash set -euo pipefail # 链接工作树推送时 Git 会向 Hook 注入 GIT_DIR 等仓库定位变量;npm 链上的测试夹具会继承 # 它们并绕过 cwd 写到真实仓库,这里统一清除,保证门禁只作用于当前工作树。 unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_COMMON_DIR GIT_PREFIX GIT_CONFIG_PARAMETERS GIT_CEILING_DIRECTORIES base_ref="${SPACETIME_SCHEMA_BASE_REF:-${1:-}}" head_ref="${REPOSITORY_CI_HEAD_REF:-${2:-HEAD}}" if [[ -z "${base_ref}" ]]; then echo '[repository-ci] 缺少比较基线;请设置 SPACETIME_SCHEMA_BASE_REF 或传入第一个参数。' >&2 exit 1 fi git cat-file -e "${base_ref}^{commit}" 2>/dev/null || { echo "[repository-ci] 比较基线不可用: ${base_ref}" >&2 exit 1 } git cat-file -e "${head_ref}^{commit}" 2>/dev/null || { echo "[repository-ci] 待检查提交不可用: ${head_ref}" >&2 exit 1 } echo "[repository-ci] base=${base_ref} head=$(git rev-parse "${head_ref}")" SPACETIME_SCHEMA_BASE_REF="${base_ref}" npm run lint npm run test -- apps/ai-game-creator-shell/tests/appSurface.test.ts npm run build git diff --check "${base_ref}"..."${head_ref}"