#!/usr/bin/env bash # This script provides a read-only overview of the repository's status. # It does not modify any files, Git history, or infrastructure. set -euo pipefail # Go to the repository root. REPO_ROOT=$(git rev-parse --show-toplevel) cd "$REPO_ROOT" echo "--- Git Status ---" # Refresh local remote-tracking metadata only. Does not change source files, history, or branches. echo "Refreshing remote-tracking branches..." git fetch --prune origin &> /dev/null || echo "WARN: Could not fetch from origin." echo "Repository root: $REPO_ROOT" # Get current branch CURRENT_BRANCH=$(git branch --show-current) echo "Current branch: $CURRENT_BRANCH" # Get local HEAD SHA and subject LOCAL_HEAD_SHA=$(git rev-parse HEAD) LOCAL_HEAD_SUBJECT=$(git log -1 --format=%s) echo "Local HEAD: $LOCAL_HEAD_SHA ($LOCAL_HEAD_SUBJECT)" # --- Remote Status --- # Check for a configured upstream branch UPSTREAM_BRANCH=$(git rev-parse --abbrev-ref --symbolic-full-name "@{u}" 2>/dev/null || echo "") # Check for a remote-tracking ref matching the current branch name MATCHING_REMOTE_REF="origin/$CURRENT_BRANCH" REMOTE_TRACKING_REF=$(git rev-parse --verify "$MATCHING_REMOTE_REF" 2>/dev/null || echo "") if [ -n "$UPSTREAM_BRANCH" ]; then echo "Configured upstream: $UPSTREAM_BRANCH" REMOTE_REF_TO_COMPARE="$UPSTREAM_BRANCH" else echo "Configured upstream: unavailable" if [ -n "$REMOTE_TRACKING_REF" ]; then REMOTE_REF_TO_COMPARE="$MATCHING_REMOTE_REF" else REMOTE_REF_TO_COMPARE="" fi fi if [ -n "$REMOTE_REF_TO_COMPARE" ]; then REMOTE_HEAD_SHA=$(git rev-parse "$REMOTE_REF_TO_COMPARE") AHEAD_BEHIND=$(git rev-list --left-right --count "$REMOTE_REF_TO_COMPARE"...HEAD) BEHIND=$(echo "$AHEAD_BEHIND" | cut -f1) AHEAD=$(echo "$AHEAD_BEHIND" | cut -f2) echo "Remote tracking ref: $REMOTE_REF_TO_COMPARE" echo "Remote HEAD: $REMOTE_HEAD_SHA" echo "Ahead: $AHEAD" echo "Behind: $BEHIND" else echo "Remote tracking ref: unavailable" echo "Remote HEAD: unavailable" echo "Ahead: unavailable" echo "Behind: unavailable" fi echo "" echo "--- Working Tree Status ---" git status --short echo "" echo "--- Last 5 Commits (current branch) ---" git log -5 --oneline --decorate echo "" echo "--- Documentation State ---" if [ -f "docs/WORKING_STATE.md" ]; then echo "- WORKING_STATE.md: Present" else echo "- WORKING_STATE.md: Missing" fi if [ -f "docs/DECISIONS.md" ]; then echo "- DECISIONS.md: Present" else echo "- DECISIONS.md: Missing" fi if [ -f "docs/AGENT_OPERATING_PROTOCOL.md" ]; then echo "- AGENT_OPERATING_PROTOCOL.md: Present" else echo "- AGENT_OPERATING_PROTOCOL.md: Missing" fi