chore: make review mode switching idempotent

This commit is contained in:
Gustavo Madeira Santana
2026-02-11 14:09:16 -05:00
parent 4200782a5d
commit 940ce424c8

View File

@@ -203,7 +203,7 @@ review_checkout_main() {
local pr="$1" local pr="$1"
enter_worktree "$pr" false enter_worktree "$pr" false
git fetch origin main git fetch origin main
git checkout -B "temp/pr-$pr" origin/main git checkout --detach origin/main
set_review_mode main set_review_mode main
echo "review mode set to main baseline" echo "review mode set to main baseline"
@@ -215,7 +215,7 @@ review_checkout_pr() {
local pr="$1" local pr="$1"
enter_worktree "$pr" false enter_worktree "$pr" false
git fetch origin "pull/$pr/head:pr-$pr" --force git fetch origin "pull/$pr/head:pr-$pr" --force
git checkout "pr-$pr" git checkout --detach "pr-$pr"
set_review_mode pr set_review_mode pr
echo "review mode set to PR head" echo "review mode set to PR head"
@@ -227,22 +227,33 @@ review_guard() {
local pr="$1" local pr="$1"
enter_worktree "$pr" false enter_worktree "$pr" false
require_artifact .local/review-mode.env require_artifact .local/review-mode.env
require_artifact .local/pr-meta.env
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source .local/review-mode.env source .local/review-mode.env
# shellcheck disable=SC1091
source .local/pr-meta.env
local branch local branch
branch=$(git branch --show-current) branch=$(git branch --show-current)
local head_sha
head_sha=$(git rev-parse HEAD)
case "${REVIEW_MODE:-}" in case "${REVIEW_MODE:-}" in
main) main)
if [ "$branch" != "temp/pr-$pr" ]; then local expected_main_sha
echo "Review guard failed: expected branch temp/pr-$pr for main baseline mode, got $branch" expected_main_sha=$(git rev-parse origin/main)
if [ "$head_sha" != "$expected_main_sha" ]; then
echo "Review guard failed: expected HEAD at origin/main ($expected_main_sha) for main baseline mode, got $head_sha"
exit 1 exit 1
fi fi
;; ;;
pr) pr)
if [ "$branch" != "pr-$pr" ] && [ "$branch" != "pr-$pr-review" ]; then if [ -z "${PR_HEAD_SHA:-}" ]; then
echo "Review guard failed: expected PR branch (pr-$pr or pr-$pr-review), got $branch" echo "Review guard failed: missing PR_HEAD_SHA in .local/pr-meta.env"
exit 1
fi
if [ "$head_sha" != "$PR_HEAD_SHA" ]; then
echo "Review guard failed: expected HEAD at PR_HEAD_SHA ($PR_HEAD_SHA), got $head_sha"
exit 1 exit 1
fi fi
;; ;;
@@ -255,6 +266,7 @@ review_guard() {
echo "review guard passed" echo "review guard passed"
echo "mode=$REVIEW_MODE" echo "mode=$REVIEW_MODE"
echo "branch=$branch" echo "branch=$branch"
echo "head=$head_sha"
} }
review_artifacts_init() { review_artifacts_init() {