#!/usr/bin/env bash set -euo pipefail # ============================================================================= # phase10_post_check.sh — Verify local repo remote cutover to Gitea # Checks for each discovered local repo: # 1. origin points to Gitea org/repo # 2. github points to GitHub owner/repo # 3. every local branch tracks origin/ # ============================================================================= SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" source "${SCRIPT_DIR}/lib/common.sh" source "${SCRIPT_DIR}/lib/phase10_common.sh" load_env require_vars GITEA_ORG_NAME GITEA_DOMAIN GITHUB_USERNAME phase_header 10 "Local Repo Remote Cutover — Post-Check" LOCAL_REPO_ROOT="${PHASE10_LOCAL_ROOT:-/Users/s/development}" EXPECTED_REPO_COUNT="${PHASE10_EXPECTED_REPO_COUNT:-3}" for arg in "$@"; do case "$arg" in --local-root=*) LOCAL_REPO_ROOT="${arg#*=}" ;; --expected-count=*) EXPECTED_REPO_COUNT="${arg#*=}" ;; --help|-h) cat </dev/null || true)" if [[ -n "$origin_url" ]] && phase10_url_is_gitea_repo "$origin_url" "$GITEA_DOMAIN" "$GITEA_ORG_NAME" "$repo_name"; then log_success "origin points to Gitea (${gitea_url})" PASS=$((PASS + 1)) else log_error "FAIL: origin does not point to ${gitea_url} (found: ${origin_url:-})" FAIL=$((FAIL + 1)) fi github_remote_url="$(git -C "$repo_path" remote get-url github 2>/dev/null || true)" if [[ -n "$github_remote_url" ]] && phase10_url_is_github_repo "$github_remote_url" "$GITHUB_USERNAME" "$repo_name"; then log_success "github points to GitHub (${github_url})" PASS=$((PASS + 1)) else log_error "FAIL: github does not point to ${github_url} (found: ${github_remote_url:-})" FAIL=$((FAIL + 1)) fi branch_count=0 while IFS= read -r branch; do [[ -z "$branch" ]] && continue branch_count=$((branch_count + 1)) upstream_remote=$(git -C "$repo_path" for-each-ref --format='%(upstream:remotename)' "refs/heads/${branch}") upstream_short=$(git -C "$repo_path" for-each-ref --format='%(upstream:short)' "refs/heads/${branch}") if [[ "$upstream_remote" == "origin" ]] && [[ "$upstream_short" == "origin/${branch}" ]]; then log_success "branch ${branch} tracks origin/${branch}" PASS=$((PASS + 1)) else log_error "FAIL: branch ${branch} tracks ${upstream_short:-} (expected origin/${branch})" FAIL=$((FAIL + 1)) fi done < <(git -C "$repo_path" for-each-ref --format='%(refname:short)' refs/heads) if [[ "$branch_count" -eq 0 ]]; then log_warn "No local branches found in ${repo_name}" fi done printf '\n' log_info "Results: ${PASS} passed, ${FAIL} failed" if [[ "$FAIL" -gt 0 ]]; then log_error "Phase 10 post-check FAILED" exit 1 fi log_success "Phase 10 post-check PASSED — local repos track Gitea origin"