From d239f1bfe54e58901f36c14500dabb084ce617af Mon Sep 17 00:00:00 2001 From: brickFE Date: Thu, 2 Apr 2026 18:51:07 +0800 Subject: [PATCH] fix: handle unresolved refs in freeze guard script --- scripts/boot3-freeze-guard.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/boot3-freeze-guard.sh b/scripts/boot3-freeze-guard.sh index f0f69af..47fdf6f 100755 --- a/scripts/boot3-freeze-guard.sh +++ b/scripts/boot3-freeze-guard.sh @@ -36,7 +36,26 @@ case "$BATCH" in ;; esac -changed_files="$(git diff --name-only "$BASE_REF" "$TARGET_REF" -- src/main/java || true)" +valid_base_ref=1 +valid_target_ref=1 + +if ! git rev-parse --verify --quiet "$BASE_REF^{commit}" >/dev/null; then + valid_base_ref=0 +fi + +if ! git rev-parse --verify --quiet "$TARGET_REF^{commit}" >/dev/null; then + valid_target_ref=0 +fi + +if [[ "$valid_base_ref" -eq 0 || "$valid_target_ref" -eq 0 ]]; then + echo "[freeze-guard] WARN: Unable to resolve revision(s)." >&2 + [[ "$valid_base_ref" -eq 0 ]] && echo "[freeze-guard] - invalid base_ref: $BASE_REF" >&2 + [[ "$valid_target_ref" -eq 0 ]] && echo "[freeze-guard] - invalid target_ref: $TARGET_REF" >&2 + echo "[freeze-guard] Fallback: evaluating only local working tree Java changes." >&2 + changed_files="$(git status --porcelain -- src/main/java | awk '{print $2}' || true)" +else + changed_files="$(git diff --name-only "$BASE_REF" "$TARGET_REF" -- src/main/java || true)" +fi if [[ -z "$changed_files" ]]; then echo "[freeze-guard] No Java source changes detected in range $BASE_REF..$TARGET_REF"